Стандартные события Yii2

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.

Типы событий

yii\web\View

  • EVENT_BEGIN_BODY (beginBody)
  • EVENT_END_BODY (endBody)

yii\base\Application

  • EVENT_BEFORE_REQUEST (beforeRequest)
  • EVENT_AFTER_REQUEST (afterRequest)

yii\base\Controller

  • EVENT_BEFORE_ACTION (beforeAction)
  • EVENT_AFTER_ACTION (afterAction)

yii\base\Model

  • EVENT_BEFORE_VALIDATE (beforeValidate)
  • EVENT_AFTER_VALIDATE (afterValidate)

yii\base\Module

  • EVENT_BEFORE_ACTION (beforeAction)
  • EVENT_AFTER_ACTION (afterAction)

yii\base\View

  • EVENT_BEGIN_PAGE (beginPage)
  • EVENT_END_PAGE (endPage)
  • EVENT_BEFORE_RENDER (beforeRender)
  • EVENT_AFTER_RENDER (afterRender)

yii\base\Widget

  • EVENT_INIT (init)
  • EVENT_BEFORE_RUN (beforeRun)
  • EVENT_AFTER_RUN (afterRun)

yii\db\ActiveQuery

  • EVENT_INIT (init)

yii\db\BaseActiveRecord

  • 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)

yii\db\BatchQueryResult

  • EVENT_RESET (reset)
  • EVENT_FINISH (finish)

yii\db\Connection

  • EVENT_AFTER_OPEN (afterOpen)
  • EVENT_BEGIN_TRANSACTION (beginTransaction)
  • EVENT_COMMIT_TRANSACTION (commitTransaction)
  • EVENT_ROLLBACK_TRANSACTION (rollbackTransaction)

yii\i18n\MessageSource

  • EVENT_MISSING_TRANSLATION (missingTranslation)

yii\mail\BaseMailer

  • EVENT_BEFORE_SEND (beforeSend)
  • EVENT_AFTER_SEND (afterSend)

yii\web\Response

  • EVENT_BEFORE_SEND (beforeSend)
  • EVENT_AFTER_SEND (afterSend)
  • EVENT_AFTER_PREPARE (afterPrepare)

yii\web\User

  • EVENT_BEFORE_LOGIN (beforeLogin)
  • EVENT_AFTER_LOGIN (afterLogin)
  • EVENT_BEFORE_LOGOUT (beforeLogout)
  • EVENT_AFTER_LOGOUT (afterLogout)

Полезные ссылки

29.11.2021

Категория(-и): Yii

# #

Добавить комментарий