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