#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
Комментариев нет:
Отправить комментарий