Зачастую название метода события делится на две части. Первая часть - время выполнения события (до или после), вторая часть - имя метода до или после которого будет выполнено событие.

События модели

  • beforeValidate() - событие будет выполнено перед валидацией
  • afterValidate() - событие будет выполнено после валидации
  • beforeSave() - событие будет выполнено перед сохранением данных
  • afterSave() - событие будет выполнено после сохранения данных
  • beforeDelete() - событие будет выполнено перед удалением данных
  • afterDelete() - событие будет выполнено после удаления данных
  • afterConstruct() - событие будет выполнено после выполнения конструктора
  • afterFind() - событие будет выполнено перед поиском данных
  • beforeFind() - событие будет выполнено после поиска данных

Пример:

<?php
class Posts extends CActiveRecord {
    //Ваш код ...
    /**
    * Действие перед проверкой данных
    *
    * @return boolean
    */
    protected function beforeValidate() {
        //Если прошла стандартная проверка данных
        if (parent::beforeValidate()) {
            //Если новая строка
            if ($this->isNewRecord) {
                $this->createDate = time();
            }
            return true;
        } else {
            retrun false;
        }
    }
    //Ваш код ...
}
?>

Еще один пример:

<?php
class Posts extends CActiveRecord {

    //Ваш код ...

    /**
    * Действие после поиска данных
    *
    * @return boolean
    */
    protected function afterFind() {
        //Если прошла стандартная проверка данных
        $this->createDate = data('d.m.Y', $this->createDate);
        return parent::afterFind();
    }
    //Ваш код ...
}
?>

События контроллера

  • beforeAction() - событие будет выполнено перед каким-либо действием контрллера
  • afterAction() - событие будет выполнено после каких-либо действий контрллера
  • beforeRender() - событие будет выполнено перед отрисовкой вида
  • afterRender() - событие будет выполнено после отрисовки вида

Пример:

<?php
class PostsController extends Controller {

    //Ваш код ...

    /**
    * Действие после выполнения какого-либо экшена текущего контроллера
    *
    * @return boolean
    */
    protected function afterAction() {
        //логирование
        Loger::saveLog($this->action->id, $this->id);
        return parent::afterAction();
    }
    //Ваш код ...
}
?>

Класс CWebUser

  • afterLogin() - событие будет выполнено после авторизации
  • beforeLogin() - событие будет выполнено после авторизации
  • afterLogout() - событие будет выполнено после выхода

Пример:

<?php
class MyWebUser extends CWebUser{
    public function afterLogin($fromCookie) {
        parent::afterLogin($fromCookie);
        //Ваш код ...
    }
}
?>