Виджет, main.php или как не нужно делать?!

Обсуждаем, как правильно строить приложения
Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam » 2015.12.20, 18:01

mkramer писал(а):
Trampampam писал(а):А вот с примерами, что используют БД туговато. Один хелловиджет всюду.
Вы программист, или копипастер? Зачем вам примеры с БД? Вы что, не можете в виджете написать:

Код: Выделить всё

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;
use app\models\Message;
class HelloWidget extends Widget
{
    public function run()
    {
        $message = Message::findOne(["subject"=>"hello"]);
        return $this->render("message", ["message" => $message]);
    }
}
Естественно, должна существовать модель Message. Ну логика же порядка 2+2.
Ни тот, ни другой. Я только осваиваюсь в этом вообще. Ровно это и пишу, но однако не работает :)

UPD на всякий случай: Ошибки не вываливаются, но данные во вью не отражаются. Просто ничего не происходит.

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer » 2015.12.20, 18:43

Отлаживайте. Значит где-то ошиблись, не обязательно в синтаксисе, может в логике. Посмотрите, какой запрос генерится, какой запрос выдаётся. Вы же понимаете, что ActiveRecord - это просто надстройка над SQL запросами? Вообще, что за манера начинать изучение программирования на php c фреймворка, да ещё и с Yii2? Я к своему первому приложению на фреймворке пришёл через 1,5 года после того, как программирование на php стало приносить мне доход.

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Виджет, main.php или как не нужно делать?!

Сообщение Onotole » 2015.12.20, 19:23

mkramer писал(а):
Trampampam писал(а):А вот с примерами, что используют БД туговато. Один хелловиджет всюду.
Вы программист, или копипастер? Зачем вам примеры с БД? Вы что, не можете в виджете написать:

Код: Выделить всё

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;
use app\models\Message;
class HelloWidget extends Widget
{
    public function run()
    {
        $message = Message::findOne(["subject"=>"hello"]);
        return $this->render("message", ["message" => $message]);
    }
}
 
Естественно, должна существовать модель Message. Ну логика же порядка 2+2.
Тогда уж лучше так:

Код: Выделить всё

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;
class HelloWidget extends Widget
{
    public $model;
    public $condition;
    public $returnParams = [];
    public function run()
    {
        $model = $this->model;
        $message = $model::findOne($this->condition);
        return $this->render("message", $this->returnParams);
    }
}
...

echo HelloWidget::widget([
    'model' => \app\models\Message::className(),
    'condition' => ["subject"=>"hello"],
    'returnParams' => ["message" => $message]
]);
 

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer » 2015.12.20, 19:31

Onotole, красиво, только что вы во вьюхе делать будете с потенциально неизвестной моделью? И по поводу returnParams я не уверен. Но суть была не в том, чтоб показать как красиво, а в том, что такую логику можно и без примера построить и отладить.

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Виджет, main.php или как не нужно делать?!

Сообщение Onotole » 2015.12.20, 19:38

mkramer писал(а):Onotole, красиво, только что вы во вьюхе делать будете с потенциально неизвестной моделью? И по поводу returnParams я не уверен. Но суть была не в том, чтоб показать как красиво, а в том, что такую логику можно и без примера построить и отладить.
Я не написал решение, а просто направление

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ElisDN » 2015.12.20, 20:06

Trampampam писал(а):Не лукавьте. Прочитать одно, понять другое. Как автор блога, вы прекрасно понимаете, что стиль изложения может быть простым и/или сложным. И в итоге, инфа вроде есть и понять ее могут только подготовленные кодеры, которым это инфа, в принципе, до лампы.
Вот и начните с лёгких вещей, потом начинайте изучать сложные. А не сразу во фреймворк, как многие отчаянно делают.
Trampampam писал(а):Опять же, от того, что вы что-то написали, это еще не говорит о том, что это есть в поиске Яндекса / Гугла на первых страницах, ибо далее 3-4 мало кто ходит. И это, как автор блога, вы тоже знаете.
Логично. Кто ходит, тот находит. Кто не ходит - не находит. Я пошёл на Озон и из прочитанного нашёл, например:

1993 - Совершенный код (Стив Макконнелл)
1998 - Философия Java (Брюс Екел)
2001 - Приемы объектно-ориентированного проектирования (Эрих Гамма, ...)
2009 - PHP. Объекты, шаблоны и методики программирования (Мэтт Зандстра)
2010 - Чистый код. Создание, анализ и рефакторинг (Роберт Мартин)
2011 - Паттерны проектирования (Эрик Фримен)
2011 - Предметно-ориентированное проектирование (DDD) (Эрик Эванс)

Также советую ещё что-нибудь по MySQL, HTML5 и CSS3, стандарты PSR, пару книг по Yii2 и документацию Symfony2, Git, Codeception, PHPUnit.

Так что не надо здесь плакаться, что Вас Яндекс и Гугл сам не учит. Не сваливайте ответственность за свои косяки на кризис, санкции или Обаму.
Последний раз редактировалось ElisDN 2016.04.23, 20:28, всего редактировалось 2 раза.

Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam » 2015.12.20, 20:54

ElisDN писал(а):
Trampampam писал(а):Не лукавьте. Прочитать одно, понять другое. Как автор блога, вы прекрасно понимаете, что стиль изложения может быть простым и/или сложным. И в итоге, инфа вроде есть и понять ее могут только подготовленные кодеры, которым это инфа, в принципе, до лампы.
Вот и начните с лёгких вещей, потом начинайте изучать сложные. А не сразу во фреймворк, как многие отчаянно делают.
Trampampam писал(а):Опять же, от того, что вы что-то написали, это еще не говорит о том, что это есть в поиске Яндекса / Гугла на первых страницах, ибо далее 3-4 мало кто ходит. И это, как автор блога, вы тоже знаете.
Логично. Кто ходит, тот находит. Кто не ходит - не неходит. Я пошёл на Озон и из прочитанного нашёл, например:

1993 - Совершенный код (Стив Макконнелл)
1998 - Философия Java (Брюс Екел)
2001 - Приемы объектно-ориентированного проектирования (Эрих Гамма, ...)
2009 - PHP. Объекты, шаблоны и методики программирования (Мэтт Зандстра)
2010 - Чистый код. Создание, анализ и рефакторинг (Роберт Мартин)
2011 - Паттерны проектирования (Эрик Фримен)
2015 - Предметно-ориентированное проектирование (DDD) (Эрик Эванс)

Также советую ещё что-нибудь по MySQL, HTML5 и CSS3, стандарты PSR, пару книг по Yii2 и документацию Symfony2, Git, Codeception, PHPUnit.

Так что не надо здесь плакаться, что Вас Яндекс и Гугл сам не учит. Не сваливайте ответственность за свои косяки на кризис, санкции или Обаму.
Ну прочитал я Мэтта Зандстра и пару книг издательства О, Рейли. + еще что-то из чистого пхп, ООП, паттернов и тому подобного. Как не получалось, так и не получается.

MySQL, HTML5 и CSS3 - относительно неплохо знаю. + опыт джумловодства (свои шаблоны, устранение косяков джумлы, правка модулей и etc) и несколько личных сайтов, приносящих денежку. Это по поводу простых вещей.

Посему и пошел по пути познания через практику, как советуют на том же Тостере. НУ прочитаю я два десятка книг, и шо?! Прямо таки сяду и буду программистом?! Полноте.

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer » 2015.12.20, 21:03

Ну так через практику - напишите блог (или доску объявлений, или ещё что) без фреймворка, отладьте. А то не получается - вы давай примеры в сети искать. А отладить свою программу - не... Оказывается, руководство по искользованию Yii виновато, что вы свою ошибку в программе найти не можете. http://phpfaq.ru/debug, https://netbeans.org/kb/docs/php/debugging_ru.html, в соседней ветке - про phpStorm. Я очень сомневаюсь, что даже у самых здесь крутых программистов (к коим себя не в коей мере не отношу) работает всё с первого запуска, как задумано.

Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam » 2015.12.20, 21:24

mkramer писал(а):Ну так через практику - напишите блог (или доску объявлений, или ещё что) без фреймворка, отладьте. А то не получается - вы давай примеры в сети искать. А отладить свою программу - не... Оказывается, руководство по искользованию Yii виновато, что вы свою ошибку в программе найти не можете. http://phpfaq.ru/debug, https://netbeans.org/kb/docs/php/debugging_ru.html, в соседней ветке - про phpStorm. Я очень сомневаюсь, что даже у самых здесь крутых программистов (к коим себя не в коей мере не отношу) работает всё с первого запуска, как задумано.
Я и пишу блог. Часть была реализована на чистом пхп. После чего стало ясно, что писать очередной велосипед - трата времени + в сети встретились советы о том, что лучше изучать сразу фреймворки, дабы потом не переучиваться писать нормальный код, если нет ментора над душой.

зы: запустил и исправил по этому ролику https://www.youtube.com/watch?v=YI12uF7PdP4

Отдельное спасибо товарищу Зеленину за показ того, как можно. Также mkramer и Onotole за куски кода.

зыы: Вспоминается известная шутка про форумы: задав вопрос на форуме вы не получите ответа, но узнаете, почему вы ***.

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer » 2015.12.20, 22:33

Trampampam писал(а): в сети встретились советы о том, что лучше изучать сразу фреймворки, дабы потом не переучиваться писать нормальный код, если нет ментора над душой.
.
Руки бы таким советчикам поотрывать. Люди элементарных основ не знают, не могут прогу без видео-урока отладить, зато лезут чего-то там на фреймворке писать...

Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin » 2015.12.21, 10:46

Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно

Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam » 2015.12.21, 11:49

ksetrin писал(а):Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно
Я его не реализовывал. Но, благодаря совету zelenin, я знаю, что так можно и это вполне себе путь Джедая. В любом варианте, его труды не напрасны и ваша ирония неуместна.

Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam » 2015.12.21, 11:54

mkramer писал(а):
Trampampam писал(а): в сети встретились советы о том, что лучше изучать сразу фреймворки, дабы потом не переучиваться писать нормальный код, если нет ментора над душой.
.
Руки бы таким советчикам поотрывать. Люди элементарных основ не знают, не могут прогу без видео-урока отладить, зато лезут чего-то там на фреймворке писать...
Кстати, прямо в тему. Очередной спор первичности материй в программировании: https://toster.ru/q/276209

Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin » 2015.12.21, 11:55

Trampampam писал(а):
ksetrin писал(а):Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно
Я его не реализовывал. Но, благодаря совету zelenin, я знаю, что так можно и это вполне себе путь Джедая. В любом варианте, его труды не напрасны и ваша ирония неуместна.
Я просто думал что этот форум какбэ русскоязычное комьюнити, где люди делятся опытом, помогают друг другу.
Как я понял, вы пишете блог, у меня тоже есть блог, и мне тоже потребуется решать такие задачи, когда статей будет чуть больше. Поэтому я хочу узнать как правильно решаить такую задачу и сразу решить ее.
А иначе зачем столько распинался zelenin, доказывал свою точку зрения.

Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin » 2015.12.21, 11:58

И нисколько моя ирония не напрасна. Ибо rugabarbo оказался ПО ФАКТУ прав, говоря, что советовать новичкам сложный паттерн SL не стоит, ибо не до него.

DeaTh
Сообщения: 41
Зарегистрирован: 2010.05.09, 14:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение DeaTh » 2015.12.21, 12:07

Господа, вот заинтересовали SL. Есть ли у вас примеры, где можно посмотреть реализацию с yii? Может проект какой на гитхабе или еще что.

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer » 2015.12.21, 12:09

Новичок новчику рознь. Просто к Yii2 нельзя приходить, когда ещё новичок от программирования. Вообще, много раз говорилось - php не должен быть первым языком, сначала надо научиться решать не-веб задачи на классических языках, типа Pascal и C, научиться отлаживать программы и т.п.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin » 2015.12.21, 12:24

xoma писал(а):Согласен почти со всеми утверждениями @zelenin, только не стал бы так резко говорить про команду, которая разрабатывает фреймворк.
Не стоит думать, что там никто не знает про сервисы, репозитории и прочие SOLID-штуки. Просто у фреймворка другая ЦА. Фреймворк позволяет быстро стартануть новичкам и писать более или менее качественный код.

Если разработчик в сотый раз пишет:
Post::find()->where()->andWhere->orWhere и т.д. то в одном, то в дргугом контроллере и не понимает, что это нужно вынести и изолировать - это проблема не фреймворка, это проблема разработчика. В симфони все тоже самое - можно 100 раз писать запрос на DBAL в контроллере, а можно сделать кастомный репозиторий и вынести логику в него и потом везде использовать.

В тоже самое время фреймворк (Yii2) позволяет использовать все из SOLID, да есть ограничения, да есть костыли, но при желании можно писать вполне себе хороший код.
да конечно разработчики знают обо всем, но только не продвигают. Если загуглить yii + ddd/cqrs результат будет близок к нулю. сообщество laravel заполнено множеством туториалов на эту тему. Множество блогов, статей, презентаций. В сообществе yii вообше ничего нет. Блоги для новичков, перетасовывающих информацию из док. Учитывая ужасающую производительность laravel, продуктивность и полезность ларавел-сообщества на самом высоком уровне.
ЦА? Ок. я и говорю: кодерам от кодеров.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin » 2015.12.21, 12:29

xoma писал(а):Соглашусь про отсутствие документации для "не новичков", вопрос о туториале для "продвинутых" пользователей поднимался уже много раз на форуме, думаю, что рано или поздно он появится. Ну или можно "скинуться" и написать самим +)
объясню почему такого не будет, на основе предыдущего твоего сообщения про "писать можно, но костылями". фреймворк сильно связан. действительно, чтобы красиво на нем писать, надо подпереть все костылями и не использовать ничего кроме контроллеров и вьюх. Разработчик, пришедший к тому, что лапшу писать неинтересно, уходит на другой фреймворк, дающий более полную свободу. На мой взгляд главная причина отсутствия сильных разработчиков в yii-сообществе, именно миграция на более профессионально интересные продукты. Как только программист начинает обладать какими-то скиллами, позволяющими ему понять ущербность yii и его заточенность под RAD, ему становится неинтересно.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin » 2015.12.21, 12:32

SiZE писал(а):
zelenin писал(а):Модель Post - об объектном отражении строки из базы данных, а не о хелпере для запросов в БД.
Тогда стоит уточнить что это модель AR, а не просто модель.
не знаю подтверждение или опровержение какого это тезиса, но ок, условно так:
AR-модель - отражение строки из БД
просто модель (POPO) - просто модель данных.
Но ни то ни другое не является хелпером для выборок коллекций или чего либо еще.

Ответить