Не получается отключить Behavior в Action, установленный в config

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

Не получается отключить Behavior в Action, установленный в config

Сообщение undestroyer »

Добрый день, у меня есть ReturnurlBehavior, который по-умолчанию работает во всех контроллерах и сконфигурирован в main.php

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

'as returnurlBehavior' => [ 'class' => \common\components\behaviors\ReturnurlBehavior::className()],
Поведение вешается на Controller::EVENT_AFTER_ACTION

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

public function events()
    {
        return [
            Controller::EVENT_AFTER_ACTION => 'insertHistory',
        ];
    }
Оно исправно запускается и выполняет свой метод insertHistory, но у меня не получается его отключить для одного конкретного Action. Я не могу вызвать $this->detachBehavior т.к. внутри контроллера его нет и $this->behaviors() возвращает пустой массив.

Как отключить Behavior установленный в конфиге приложения?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение ElisDN »

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

'as returnurlBehavior' => [
    'class' => \common\components\behaviors\ReturnurlBehavior::className(),
    'except' => ['site/login', 'site/error'],
],
undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение undestroyer »

Я же правильно понял, что except нужно создать как public property в классе поведения и прогонять проверку внутри метода insertHistory перед выполнением функциональных действий поведения?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение ElisDN »

undestroyer писал(а): 2017.04.05, 14:26 Я же правильно понял, что except нужно создать как public property в классе поведения и прогонять проверку внутри метода insertHistory перед выполнением функциональных действий поведения?
Неправильно. Этот except уже встроен.
undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение undestroyer »

ElisDN писал(а): 2017.04.05, 14:56
undestroyer писал(а): 2017.04.05, 14:26 Я же правильно понял, что except нужно создать как public property в классе поведения и прогонять проверку внутри метода insertHistory перед выполнением функциональных действий поведения?
Неправильно. Этот except уже встроен.
В документации по yii\base\Behavior не упоминается except. Я что-то упустил?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение ElisDN »

undestroyer писал(а): 2017.04.05, 15:26 В документации по yii\base\Behavior не упоминается except. Я что-то упустил?
AccessControl, VerbFilter и подобные поведения для контроллеров наследуют от ActionFilter, где это есть. Сделайте и своё поведение его наследником, переопределив метод afterAction.
undestroyer
Сообщения: 120
Зарегистрирован: 2014.01.06, 13:46

Re: Не получается отключить Behavior в Action, установленный в config

Сообщение undestroyer »

ElisDN писал(а): 2017.04.05, 15:50
undestroyer писал(а): 2017.04.05, 15:26 В документации по yii\base\Behavior не упоминается except. Я что-то упустил?
AccessControl, VerbFilter и подобные поведения для контроллеров наследуют от ActionFilter, где это есть. Сделайте и своё поведение его наследником, переопределив метод afterAction.
Теперь понял, спасибо!
Ответить