События для поведений (behavior) в Yii2

Ноябрь 5th, 2014
Метки: ,

Я написала свое первое поведение :) Скачать его можно с github.
Поведение — это способ повесить вызов какой-то функции на какое-то событие. Мое поведение использует событие ActiveRecord::EVENT_AFTER_FIND, которое срабатывает после получения результата запроса, для вызова функции convertDate(). Те после того, как я прописала данное поведение в любой модели, всегда после получения результатов запроса будет срабатывать вызов функции convertDate().
Когда это нужно:

  • например перед вызовом action нужно проверить права пользователя
  • перед тем как сохранить данные модели в базу добавить поле даты или преобразовать какое-то поле
  • после генерации view добавить лог

итп. Сфера применения огромная. В Yii2 поведения можно вешать на все: модель, представление, контролер, запрос, само приложение и тп. И главное тут правильно выбрать событие по которому будет срабатывать ваше поведение.

Список событий для поведений в Yii2

В основном название событий в Yii2 звучные и отражают суть события, поэтому расшифровывать буду только некоторые из них.

События Yii2 для MVC

Controller или Module
EVENT_BEFORE_ACTION
EVENT_AFTER_ACTION

Model
EVENT_BEFORE_VALIDATE
EVENT_AFTER_VALIDATE

Для компонента представления (yii\base\View)
EVENT_BEGIN_PAGE
EVENT_END_PAGE
EVENT_BEFORE_RENDER
EVENT_AFTER_RENDER

Для веб-представления, от наследованного от компонента представления (yii\web\View)
EVENT_BEGIN_BODY
EVENT_END_BODY

События Yii2 связанные с БД

BaseActiveRecord
EVENT_INIT — происходит когда инициализируется строка с выбранной записью
EVENT_AFTER_FIND
EVENT_BEFORE_INSERT
EVENT_AFTER_INSERT
EVENT_BEFORE_UPDATE
EVENT_AFTER_UPDATE
EVENT_BEFORE_DELETE
EVENT_AFTER_DELETE

ActiveQuery
EVENT_INIT — происходит когда инициализируется запрос (а не результат запроса)

Connection
EVENT_AFTER_OPEN — происходит после установления коннекта к БД
EVENT_BEGIN_TRANSACTION
EVENT_COMMIT_TRANSACTION
EVENT_ROLLBACK_TRANSACTION

События Yii2 на уровне запросов

Application
EVENT_BEFORE_REQUEST
EVENT_AFTER_REQUEST

Response
EVENT_BEFORE_SEND
EVENT_AFTER_SEND
EVENT_AFTER_PREPARE

События Yii2 для готовых компонентов

MessageSource
EVENT_MISSING_TRANSLATION

BaseMailer
EVENT_BEFORE_SEND
EVENT_AFTER_SEND

User
EVENT_BEFORE_LOGIN
EVENT_AFTER_LOGIN
EVENT_BEFORE_LOGOUT
EVENT_AFTER_LOGOUT


Метки: ,

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

2 комментариев »

    Mozart

    Жму руку за инфу)


    Oleg

    Очень хорошо написано


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









Копирование материалов разрешено при наличии активной ссылки на источник
Яндекс.Метрика