Yii2 имеет множество стандартных типов событий для вызова собственного кода в нужный момент работы его компонентов. В этой заметке перечислены все найденные типы событий на текущий момент и приведены примеры использования, по больше части из документации.
Привязка, отвязка и триггеры
Привязка в коде:
$foo = new Foo(); // обработчик - глобальная функция $foo->on(Foo::EVENT_HELLO, 'function_name'); // обработчик - метод объекта $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']); // обработчик - статический метод класса $foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']); // обработчик - анонимная функция $foo->on(Foo::EVENT_HELLO, function ($event) { // логика обработки события });
Привязка через конфигурацию:
... $config = [ ... 'components' => [ ... 'response' => [ 'on beforeSend' => function(){ Yii::info('Событие до отправки ответа.'); } ], ... ], ... ]; ...
Отвязка:
// обработчик - глобальная функция $foo->off(Foo::EVENT_HELLO, 'function_name'); // обработчик - метод объекта $foo->off(Foo::EVENT_HELLO, [$object, 'methodName']); // обработчик - статический метод класса $foo->off(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']); // обработчик - анонимная функция $foo->off(Foo::EVENT_HELLO, $anonymousFunction); // отвязка всех обработчиков $foo->off(Foo::EVENT_HELLO);
Триггер:
$this->trigger('eventName');
Для вызова триггера, добавления и удаления обработчиков событий необходимо, чтобы класс был унаследован от стандартного yii\base\Component.
Типы событий
- EVENT_BEGIN_BODY (beginBody)
- EVENT_END_BODY (endBody)
- EVENT_BEFORE_REQUEST (beforeRequest)
- EVENT_AFTER_REQUEST (afterRequest)
- EVENT_BEFORE_ACTION (beforeAction)
- EVENT_AFTER_ACTION (afterAction)
- EVENT_BEFORE_VALIDATE (beforeValidate)
- EVENT_AFTER_VALIDATE (afterValidate)
- EVENT_BEFORE_ACTION (beforeAction)
- EVENT_AFTER_ACTION (afterAction)
- EVENT_BEGIN_PAGE (beginPage)
- EVENT_END_PAGE (endPage)
- EVENT_BEFORE_RENDER (beforeRender)
- EVENT_AFTER_RENDER (afterRender)
- EVENT_INIT (init)
- EVENT_BEFORE_RUN (beforeRun)
- EVENT_AFTER_RUN (afterRun)
- EVENT_INIT (init)
- EVENT_INIT (init)
- EVENT_AFTER_FIND (afterFind)
- EVENT_BEFORE_INSERT (beforeInsert)
- EVENT_AFTER_INSERT (afterInsert)
- EVENT_BEFORE_UPDATE (beforeUpdate)
- EVENT_AFTER_UPDATE (afterUpdate)
- EVENT_BEFORE_DELETE (beforeDelete)
- EVENT_AFTER_DELETE (afterDelete)
- EVENT_AFTER_REFRESH (afterRefresh)
- EVENT_RESET (reset)
- EVENT_FINISH (finish)
- EVENT_AFTER_OPEN (afterOpen)
- EVENT_BEGIN_TRANSACTION (beginTransaction)
- EVENT_COMMIT_TRANSACTION (commitTransaction)
- EVENT_ROLLBACK_TRANSACTION (rollbackTransaction)
- EVENT_MISSING_TRANSLATION (missingTranslation)
- EVENT_BEFORE_SEND (beforeSend)
- EVENT_AFTER_SEND (afterSend)
- EVENT_BEFORE_SEND (beforeSend)
- EVENT_AFTER_SEND (afterSend)
- EVENT_AFTER_PREPARE (afterPrepare)
- EVENT_BEFORE_LOGIN (beforeLogin)
- EVENT_AFTER_LOGIN (afterLogin)
- EVENT_BEFORE_LOGOUT (beforeLogout)
- EVENT_AFTER_LOGOUT (afterLogout)
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.