Я написала свое первое поведение 🙂 Скачать его можно с github.
Поведение — это способ повесить вызов какой-то функции на какое-то событие. Мое поведение использует событие ActiveRecord::EVENT_AFTER_FIND, которое срабатывает после получения результата запроса, для вызова функции convertDate(). Те после того, как я прописала данное поведение в любой модели, всегда после получения результатов запроса будет срабатывать вызов функции convertDate().
Когда это нужно:
итп. Сфера применения огромная. В Yii2 поведения можно вешать на все: модель, представление, контролер, запрос, само приложение и тп. И главное тут правильно выбрать событие по которому будет срабатывать ваше поведение.
В основном название событий в Yii2 звучные и отражают суть события, поэтому расшифровывать буду только некоторые из них.
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
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
Application
EVENT_BEFORE_REQUEST
EVENT_AFTER_REQUEST
Response
EVENT_BEFORE_SEND
EVENT_AFTER_SEND
EVENT_AFTER_PREPARE
MessageSource
EVENT_MISSING_TRANSLATION
BaseMailer
EVENT_BEFORE_SEND
EVENT_AFTER_SEND
User
EVENT_BEFORE_LOGIN
EVENT_AFTER_LOGIN
EVENT_BEFORE_LOGOUT
EVENT_AFTER_LOGOUT
Жму руку за инфу)
Очень хорошо написано