Страницы

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

четверг, 23 января 2020 г.

yii2 события в контроллерах

#php #yii2 #события


Есть два модуля - Comments и Pages со своей структурой, т.е. реализация не стандартная
как по умолчанию в Yii2. Соответственно два контроллера 

class CommentsController extends BaseController
{            
    public function actionIndex()
    {
        return $this->render('index');
    }
}

Event::on(PagesController::className(), PagesController::EVENT_GET_COMMENTS, 
function ($event) {
       echo 'comments';
    });


ну и аналогично для Pages

class PagesController extends BaseController
{   
    const EVENT_GET_COMMENTS = '';

    public function actionIndex()
    {
        $this->trigger(self::EVENT_GET_COMMENTS);

        return $this->render('index');
    }
}


В теории при вызове контроллера Pages действия index должно срабатывать событие EVENT_GET_COMMENTS
и выводиться comments, но этого не происходит :(
    


Ответы

Ответ 1



У вас есть 3 способа: №1 (глобально): Создать компонент с необходимой логикой Добавить в конфигурационный файл 'components' => [ 'myComponent' => [ 'class'=>'app\components\MyComponent' ], //other components ] и не забыть про 'bootstrap' => ['log','myComponent'] №2: Унаследовать метод в контроллере public function beforeAction($event) { // ваш код return parent::beforeAction($event); } №3: Создать поведение: http://www.yiiframework.com/doc-2.0/guide-concept-behaviors.html, см. как Добавить написанное поведение в контроллер, например как AccessControl

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

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