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