这个是我的ActionTimeFilter 那么如何在web.php中配置才能启用每个action都会通过这个过滤器? 在线等,急急急 搞了一天了~ 有大牛吗
<?php
namespace app\filters;
use Yii;
use yii\base\Action;
use yii\base\ActionFilter;
class ActionTimeFilter extends ActionFilter
{
private $_startTime;
public function beforeAction($action)
{
Yii::info('2222222222222');
$this->_startTime = microtime(true);
return array(
'dd'=>2
);
return parent::beforeAction($action);
// return parent::beforeAction($action);
}
public function afterAction($action, $result)
{
$time = microtime(true) - $this->_startTime;
Yii::debug("Action '{$action->uniqueId}' spent $time second.");
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return array(
'dd'=>2
);
// $time = microtime(true) - $this->_startTime;
// Yii::debug("Action '{$action->uniqueId}' spent $time second.");
// Yii::$app->response->format=Response::FORMAT_JSON;
return parent::afterAction($action, $result);
}
}
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
你需要先建一个通用的控制器
use yii\web\Controller;
class CommonController extend Controller {
public function behaviors() {
return [
'timeFilter' => 'app\filters\ActionTimeFilter',
];
}
}
其他控制器继承这个就行了
当年话下
TA贡献1890条经验 获得超9个赞
亲测可用:
class BaseActiveController extends \yii\rest\ActiveController
{
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['timeFilter'] = [
'class' => 'app\filters\ActionTimeFilter',
'except'=>['test']
];
return $behaviors;
}
}
值得注意的是,behaviors()
中需要继承父类behaviors()
方法返回的内容,否则父类behaviors()
就会被完全覆盖了。
- 3 回答
- 0 关注
- 393 浏览
添加回答
举报
0/150
提交
取消