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

这个是我的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);
    }
}
繁华开满天机
浏览 394回答 3
3回答

素胚勾勒不出你

你需要先建一个通用的控制器 use yii\web\Controller; class CommonController extend Controller { public function behaviors() { return [ 'timeFilter' => 'app\filters\ActionTimeFilter', ]; } } 其他控制器继承这个就行了

当年话下

亲测可用: 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()就会被完全覆盖了。

PIPIONE

给 app 实例注入一个行为, 行为里绑定对应事件的处理器即可. 实战:1, 配置文件 2, 控制器 输入结果:
打开App,查看更多内容
随时随地看视频慕课网APP