Yii, как вызывать обработчик событий для каждого запроса

Можно ли в Yii вызывать обработчик событий, чтобы он выполнялся при каждом вызове действия контроллера. В основном у меня есть приложение RESTful. В настоящее время при каждом запросе он явно вызывает функцию аутентификации. То, что я хочу, это вызовы функции аутентификации при выполнении любого запроса.

Что я сделал

class MyController extends RestController{
 public function actionDosomething(){
  $this->authenticate();// I don't want this line to be put in every controller action.
 }
}

2 ответа

Решение

Ваш ответ - обратный вызов beforeAction. Поместите это в ваш основной файл контроллера.

public function beforeAction($action) {

     if(in_array($action, array( /* you list of actions */ ))) 
     {
       //do your thing
     }
}

Другой вариант (на мой взгляд, более похожий на Yii подход) состоит в том, чтобы написать фильтр и затем применить его по своему усмотрению, используя filters метод.

Это даст вам еще большую гибкость в будущем: http://www.yiiframework.com/doc/guide/1.1/en/basics.controller

Другие вопросы по тегам