Нужно провести некоторые манипуляции с данными, не хочу руками бд править, решил съиммитировать вызов экшена из другого контроллера. Не получается пока. Как это сделать?
Нужный экшн вынесен отдельным экшеном, унаследованным от yii\base\action
Зачем при манипуляции с данными вызывать другой контроллер?
Есть же модели где данные все описаны, вызывай модель (даже если она в другом модуле находится)
и с ней уже работай.
McMike, ваш конкретный вопрос - столь очевидная bad practice, что хорошего ответа на него просто нет. Вы хотите грубо сломать выверенную архитектуру приложения без всякой на то необходимости.
Между тем, нормальное решение тривиально: создать базовый контроллер с нужной функцией и унаследовать от него оба контроллера, в которых она нужна. Проще некуда.
Adamos, ну хорошо, это красиво конечно. Но, в итоге, я так понимаю ответом на мой вопрос будет "у фреймворка нет такой возможности"? Просто есть разовая задача, которую быстро можно сделать в полу-ручном режиме, вызываю как попало, то что нужно.
McMike, Переформулирую ваш вопрос.
Есть ли у фреймворка возможность воткнуть костыль поперек его архитектуры?
Признаться, не считаю время, затраченное на поиск ответа на такой вопрос, потраченным с пользой.
Adamos, ну вот представь себе контроллер на туеву кучу строк, который писал не ты, ты знаешь в общих чертах, что он делает, но не заешь конкретно, что пишется в бд, а по пути пишется там много всего. Задача съэмитирвать его вызов, скажем 1000 раз. Логично, что напрашивается решение использовать контроллер в качестве обычной функции. Просто я был немного удивлен, когда вызов public function не удался, я думал есть простой способ это сделать, но похоже придется написать чуть больше, чем планировал. Все равно, спасибо за ответ.
McMike, Имитировать все равно логичнее в естественной среде - то есть запросом к тому маршруту, на который и повешена эта функция этого контроллера. Вырывая произвольный кусок, вы теряете, например, middleware...
McMike, лично я такого не знаю, я такого не делал.
Ни в одном коде такого не видел (Yupe, HumHub и т.д.) а там парни знающие :)
Ты не правильно трактуешь само понятие контроллер и MVC.