#php #yii2 #controller #modules
Есть базовый класс для всех модулей namespace app\components; use Yii; class Module extends \yii\base\Module { public function init() { parent::init(); var_dump(Yii::$app->controller->id); // null :( } } Все модули расширяются от него, т.е. namespace app\modules\test; class Module extends \app\components\Module { // } Как мне получить название текущего контроллера в базовом классе модуля ? Yii::$app->controller->id возвращает null
Ответы
Ответ 1
Ну для начала не Yii::$app->controller->id а Yii::app()->controller->id Тогда он выдаст тебе название контроллера. //UPD Ты вызываешь его из init() модуля. Что может дать тебе этот вызов, если он не значет какой контроллер у тебя сейчас. Он и будет тебе всегда NULL показывать! и если вопрос звучит именно так Как мне получить название текущего контроллера в базовом классе модуля ? то ответ никак. т.к. модуль не знает о контроллере ничего чтобы выдать какую-то информацию.Ответ 2
Я думаю самым простым решением будет создание еще одного класса от которого будут наследоваться все остальные, в котором можно делать операции с ид контроллеров. class MainController extends yii\base\Controller { // some... public function beforeAction($event) { $ct = $event->controller->id; // current ctrl return parent::beforeAction($event); } } А от него наследовать уже все остальные контроллеры class PostController extends MainController { // do something... }
Комментариев нет:
Отправить комментарий