为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
繁华开满天机 2019-03-13 21:44:19
这个是我的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',
    ];
  }
}

其他控制器继承这个就行了

查看完整回答
反对 回复 2019-03-18
?
当年话下

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()就会被完全覆盖了。
查看完整回答
反对 回复 2019-03-18
?
PIPIONE

TA贡献1829条经验 获得超9个赞

给 app 实例注入一个行为, 行为里绑定对应事件的处理器即可.

实战:
1, 配置文件
https://img1.sycdn.imooc.com//5c8f42480001304a05520403.jpg

2, 控制器
https://img1.sycdn.imooc.com//5c8f42490001f2ab04560142.jpg

输入结果:

https://img1.sycdn.imooc.com//5c8f424b000178c703460181.jpg

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 375 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信