Yii如何在每个请求上调用事件处理程序

时间:2014-01-07 13:26:23

标签: web-services rest yii yii-events

是否可以在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 个答案:

答案 0 :(得分:1)

您的答案是 beforeAction 回调。将其放在主控制器文件中。

public function beforeAction($action) {

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

答案 1 :(得分:1)

另一种选择(在我看来,更像Yii的方法)是编写一个过滤器,然后使用filters方法根据需要应用它。

它将在未来为您提供更大的灵活性: http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#filter