Ребятушки жажду помощи, начал осваивать постепенно yii2, возникло небольшое недопонимание...из название ясно, меня интересует как в main.php а желательно непосредственно в виджет вытащить данные с бд. обычный способ как в конроллер тащить говорят что совсем не хорош, вроде этого, способ то рабочий...но вроде как не правильный. Код (Text): $my = Mytable::find()->all(); return $this->render ('mywidgetview', ['mymenu' => $my] ); Так как же сделать правильно, изучаю с дня 4 фреймворк, так что буксую сильновато. Прошу подскажите.
Ну так в виджите и вытаскиваешь, в чём проблема? PHP: class MyWidget extends Widget { public function run() { $data = MyActiveRecord::find()->.....; return $this->render("my-widget", ["data" => $data]); } } Хочешь совсем-совсем по-уму, лепи сервисы, которые и будут обращаться к БД, а в виджете обращайся к этим сервисам. Если для тебя интересна чистая архитектура, полистай блог @ElisDN, он там много советов даёт. Пользоватья или нет - тебе решать. Для небольших и среднего размера приложений лично я всё это не пользую, слишком заморочно.
спасибо за ответ, я сравнительно не давно влился в сферу вэб и делаю сайты исключительно для себя, хобби у меня такое)) а ответ я уже получил на офф форуме, было сказано что в виджеты можно на прямую выводить так как я описал, это ни чего не нарушает. вот цитата конечно ответа модератора их форума, мб вам будет полезно как и другим, я полагаю что на мнение можно положиться в той или иной степени. 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.
Ну я тоже самое ответил Хотя, повторюсь, наиболее правильный вариант - вынести запросы в отдельный класс (Single responsibility и прочие умные термины). Т.е. не в контроллере, не в виджите, а в хранилище или сервисе делать обращение к БД. Но это начинает действительно приносить пользу, если проект крупный. Для маленьких и так сойдёт
вообще вы очень странный обитатель этого форума) в последний раз когда я сюда решил заглянуть и спросить что то, мне сказали примерно "ты на столько тупой, что тебе даже бесполезно какие либо книги советовать". А что больше всего странно человек напечатавший это не предложил решения)), я честно удивлён)) особенно после того как пробежался по форуму и увидел 90% скотского хейта в сторону спросивших)). Спасибо вам за то какой вы есть)