是否可以在 Yii 中调用事件处理程序,以便它在每个控制器操作调用上执行。基本上我有一个RESTful应用程序。目前,在每个请求上,它显式调用身份验证函数。我想要的是发出任何请求时调用的身份验证函数。
我做了什么
class MyController extends RestController{
public function actionDosomething(){
$this->authenticate();// I don't want this line to be put in every controller action.
}
}
你的答案是 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#filter