За последние 24 часа нас посетили 22892 программиста и 1232 робота. Сейчас ищут 802 программиста ...

Yii вывод с бд данных в widget или main.php

Тема в разделе "Yii", создана пользователем GlebSharapov, 26 янв 2019.

  1. GlebSharapov

    GlebSharapov Новичок

    С нами с:
    19 дек 2018
    Сообщения:
    25
    Симпатии:
    1
    Ребятушки жажду помощи, начал осваивать постепенно yii2, возникло небольшое недопонимание...из название ясно, меня интересует как в main.php а желательно непосредственно в виджет вытащить данные с бд.

    обычный способ как в конроллер тащить говорят что совсем не хорош, вроде этого, способ то рабочий...но вроде как не правильный.

    Код (Text):
    1. $my = Mytable::find()->all();
    2.                        
    3.         return $this->render
    4.         ('mywidgetview',  ['mymenu' => $my] );
    Так как же сделать правильно, изучаю с дня 4 фреймворк, так что буксую сильновато. Прошу подскажите.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну так в виджите и вытаскиваешь, в чём проблема?
    PHP:
    1. class MyWidget extends Widget {
    2.      public function run() {
    3.                 $data = MyActiveRecord::find()->.....;
    4.                 return $this->render("my-widget", ["data" => $data]);
    5.      }
    6. }
    Хочешь совсем-совсем по-уму, лепи сервисы, которые и будут обращаться к БД, а в виджете обращайся к этим сервисам.

    Если для тебя интересна чистая архитектура, полистай блог @ElisDN, он там много советов даёт. Пользоватья или нет - тебе решать. Для небольших и среднего размера приложений лично я всё это не пользую, слишком заморочно.
     
  3. GlebSharapov

    GlebSharapov Новичок

    С нами с:
    19 дек 2018
    Сообщения:
    25
    Симпатии:
    1

    спасибо за ответ, я сравнительно не давно влился в сферу вэб и делаю сайты исключительно для себя, хобби у меня такое))

    а ответ я уже получил на офф форуме, было сказано что в виджеты можно на прямую выводить так как я описал, это ни чего не нарушает.

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

    I think that this widget should include the necessary db accessing inside it. Or you have to do it in each and every controller and pass the query result to the widget every time you want to use it. That’s sheer nonsense. Don’t give a damn to what MVC idiots say, if it will make things unnecessarily complicated.
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну я тоже самое ответил :) Хотя, повторюсь, наиболее правильный вариант - вынести запросы в отдельный класс (Single responsibility и прочие умные термины). Т.е. не в контроллере, не в виджите, а в хранилище или сервисе делать обращение к БД. Но это начинает действительно приносить пользу, если проект крупный. Для маленьких и так сойдёт
     
  5. GlebSharapov

    GlebSharapov Новичок

    С нами с:
    19 дек 2018
    Сообщения:
    25
    Симпатии:
    1

    вообще вы очень странный обитатель этого форума) в последний раз когда я сюда решил заглянуть и спросить что то, мне сказали примерно "ты на столько тупой, что тебе даже бесполезно какие либо книги советовать". А что больше всего странно человек напечатавший это не предложил решения)), я честно удивлён)) особенно после того как пробежался по форуму и увидел 90% скотского хейта в сторону спросивших)).
    Спасибо вам за то какой вы есть)