Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Yii2 имя текущего контроллера в модуле

#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... }

Комментариев нет:

Отправить комментарий