YII2 如何书写并且配置在所有action请求之前和之后?

这个是我的ActionTimeFilter那么如何在web.php中配置才能启用每个action都会通过这个过滤器?在线等,急急急搞了一天了~有大牛吗
namespaceapp\filters;
useYii;
useyii\base\Action;
useyii\base\ActionFilter;
classActionTimeFilterextendsActionFilter
{
private$_startTime;
publicfunctionbeforeAction($action)
{
Yii::info('2222222222222');
$this->_startTime=microtime(true);
returnarray(
'dd'=>2
);
returnparent::beforeAction($action);
//returnparent::beforeAction($action);
}
publicfunctionafterAction($action,$result)
{
$time=microtime(true)-$this->_startTime;
Yii::debug("Action'{$action->uniqueId}'spent$timesecond.");
\Yii::$app->response->format=\yii\web\Response::FORMAT_JSON;
returnarray(
'dd'=>2
);
//$time=microtime(true)-$this->_startTime;
//Yii::debug("Action'{$action->uniqueId}'spent$timesecond.");
//Yii::$app->response->format=Response::FORMAT_JSON;
returnparent::afterAction($action,$result);
}
}
四季花海
浏览 409回答 2
2回答

米琪卡哇伊

你需要先建一个通用的控制器useyii\web\Controller;classCommonControllerextendController{publicfunctionbehaviors(){return['timeFilter'=>'app\filters\ActionTimeFilter',];}}其他控制器继承这个就行了

蛊毒传说

亲测可用:classBaseActiveControllerextends\yii\rest\ActiveController{publicfunctionbehaviors(){$behaviors=parent::behaviors();$behaviors['timeFilter']=['class'=>'app\filters\ActionTimeFilter','except'=>['test']];return$behaviors;}}值得注意的是,behaviors()中需要继承父类behaviors()方法返回的内容,否则父类behaviors()就会被完全覆盖了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript