Узнать текущий контроллер и action

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
BMW M6
Сообщения: 110
Зарегистрирован: 2014.07.13, 23:19
Откуда: Воронеж

Узнать текущий контроллер и action

Сообщение BMW M6 »

Доброго времени суток :)
Как узнать имя текущего контроллера и action'а в лейауте?
P.S. В документации что-то не нашёл :)
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение TranceSmile »

Yii::$app->controller->id;
Изображение
BMW M6
Сообщения: 110
Зарегистрирован: 2014.07.13, 23:19
Откуда: Воронеж

Re: Узнать текущий контроллер и action

Сообщение BMW M6 »

Спасибо. В гугле находил это, но забыл написать use yii;
BMW M6
Сообщения: 110
Зарегистрирован: 2014.07.13, 23:19
Откуда: Воронеж

Re: Узнать текущий контроллер и action

Сообщение BMW M6 »

Вот ещё вопрос:
Сейчас мне надо узнать модуль/контроллер/экшен для этого я пишу вот так

Код: Выделить всё

Yii::$app->controller->module->id . '/'. Yii::$app->controller->id . '/' . Yii::$app->controller->action->id
Есть ли в yii какая то замена этой длинной строки?
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение TranceSmile »

А зачем она такая нужна?
Изображение
BMW M6
Сообщения: 110
Зарегистрирован: 2014.07.13, 23:19
Откуда: Воронеж

Re: Узнать текущий контроллер и action

Сообщение BMW M6 »

При постарение list-group надо проверять для того, чтобы ставить класс active :)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение ElisDN »

Код: Выделить всё

Yii::$app->controller->route
Pavelyev
Сообщения: 42
Зарегистрирован: 2011.11.06, 19:18

Re: Узнать текущий контроллер и action

Сообщение Pavelyev »

Вот ещё вопрос:
Сейчас мне надо узнать модуль/контроллер/экшен для этого я пишу вот так
КОД: ВЫДЕЛИТЬ ВСЁ
Yii::$app->controller->module->id . '/'. Yii::$app->controller->id . '/' . Yii::$app->controller->action->id

Есть ли в yii какая то замена этой длинной строки?
debuger выводит эту информацию :)

А ещё как вариант сделать шоткат в IDE на эту длинную строчку, все-равно это временный код (как я понимаю).
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение slavcodev »

Еще в представлении (шаблоне) можно

Код: Выделить всё

echo $this->context->id; 
вернет ИД контролера который рендерит это представление.
Жду Yii 3!
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Узнать текущий контроллер и action

Сообщение vismut »

BMW M6 писал(а):Вот ещё вопрос:
Сейчас мне надо узнать модуль/контроллер/экшен для этого я пишу вот так

Код: Выделить всё

Yii::$app->controller->module->id . '/'. Yii::$app->controller->id . '/' . Yii::$app->controller->action->id
Есть ли в yii какая то замена этой длинной строки?
Ай-яй.. Если у вас потом появится подмодуль - все сломается..

Код: Выделить всё

        $operationStack = [];
        $controller = $action->controller;
        $module = $controller->module;
        array_unshift($operationStack, $action->id);
        array_unshift($operationStack, $controller->id);

        while (!(empty($module) || ($module instanceof \yii\base\Application))) {
            array_unshift($operationStack, $module->id);
            $module = $module->module;
        }

        $operation = implode(DbManager::PERMISION_ROUTE_DIVIDER, $operationStack);
         
У меня так. Просто у себя имплоудите $operationStack как нравится вам
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение slavcodev »

vismut писал(а):

Код: Выделить всё

        $operationStack = [];
        $controller = $action->controller;
        $module = $controller->module;
        array_unshift($operationStack, $action->id);
        array_unshift($operationStack, $controller->id);

        while (!(empty($module) || ($module instanceof \yii\base\Application))) {
            array_unshift($operationStack, $module->id);
            $module = $module->module;
        }

        $operation = implode(DbManager::PERMISION_ROUTE_DIVIDER, $operationStack);
 
У меня так. Просто у себя имплоудите $operationStack как нравится вам
Или просто, как написал ElisDN, результат будет тот же

Код: Выделить всё

Yii::$app->controller->route;
или

Код: Выделить всё

$this->context->route;
Жду Yii 3!
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Узнать текущий контроллер и action

Сообщение vismut »

Код: Выделить всё

Yii::$app->controller->route; 
Спасибо) Действительно) То что надо:)
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Узнать текущий контроллер и action

Сообщение VaNnOrus »

slavcodev писал(а): Или просто, как написал ElisDN, результат будет тот же

Код: Выделить всё

Yii::$app->controller->route; 
или

Код: Выделить всё

$this->context->route; 
Любовь городить собственные велосипеды у программиста не отнять :D
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Узнать текущий контроллер и action

Сообщение slavcodev »

VaNnOrus писал(а):Любовь городить собственные велосипеды у программиста не отнять :D
Тут скорее всего не велосипедостроение, а упущение возможностей фреймворка, или даже последствия некоторых циклов изменения кода, без рефакторинга.
Жду Yii 3!
BMW M6
Сообщения: 110
Зарегистрирован: 2014.07.13, 23:19
Откуда: Воронеж

Re: Узнать текущий контроллер и action

Сообщение BMW M6 »

vismut писал(а):
BMW M6 писал(а):Вот ещё вопрос:
Сейчас мне надо узнать модуль/контроллер/экшен для этого я пишу вот так

Код: Выделить всё

Yii::$app->controller->module->id . '/'. Yii::$app->controller->id . '/' . Yii::$app->controller->action->id
Есть ли в yii какая то замена этой длинной строки?
Ай-яй.. Если у вас потом появится подмодуль - все сломается..

Код: Выделить всё

        $operationStack = [];
        $controller = $action->controller;
        $module = $controller->module;
        array_unshift($operationStack, $action->id);
        array_unshift($operationStack, $controller->id);

        while (!(empty($module) || ($module instanceof \yii\base\Application))) {
            array_unshift($operationStack, $module->id);
            $module = $module->module;
        }

        $operation = implode(DbManager::PERMISION_ROUTE_DIVIDER, $operationStack);
У меня так. Просто у себя имплоудите $operationStack как нравится вам
Спасибо :)
Закрыто