• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Yii中特殊行为ActionFilter的使用方法示例

    新建 app\filters\LoggingFilter 继承 yii\base\ActionFilter

    LoggingFilter 的功能: 在指定请求的 action 前后各记录一条日志

    ?php
    
    namespace app\filters;
    
    use yii\base\ActionFilter;
    
    class LoggingFilter extends ActionFilter
    {
     public function beforeAction($action)
     {
      parent::beforeAction($action);
    
      // To do something
      printf('This is a logging for %s\beforeAction.%s', $this->getActionId($action), PHP_EOL);
    
      return true;
     }
    
     public function afterAction($action, $result)
     {
      parent::afterAction($action, $result);
    
      // To do something
      printf('This is a logging for %s\afterAction.%s', $this->getActionId($action), PHP_EOL);
    
      return true;
     }
    }

    新建 app\controllers\SystemController

    ?php
    
    namespace app\controllers;
    
    use app\filters\LoggingFilter;
    
    class SystemController extends \yii\web\Controller
    {
     public function behaviors()
     {
      parent::behaviors();
    
      return [
       'anchorAuth' => [
        'class' => LoggingFilter::className(),
        'only' => ['test', 'test-one'], // 仅对 'test'、'test-one' 生效
        'except' => ['test-one'], // 排除 'test-one'
       ],
      ];
     }
    
     public function actionTestOne()
     {
      printf('This is a testing for %s.%s', $this->getRoute(), PHP_EOL);
     }
    
     public function actionTestTwo()
     {
      printf('This is a testing for %s.%s', $this->getRoute(), PHP_EOL);
     }
    
     public function actionTest()
     {
      printf('This is a testing for %s.%s', $this->getRoute(), PHP_EOL);
     }
    }

    测试

    请求 http://yii.test/index.php?r=system/test

    This is a logging for test\beforeAction.
    This is a testing for system/test.
    This is a logging for test\afterAction.

    请求 http://yii.test/index.php?r=system/test-one

    This is a testing for system/test-one.

    请求 http://yii.test/index.php?r=system/test-two

    This is a testing for system/test-two.

    总结

    Yii 中的 ActionFilter(过滤器)相当于 Laravel 中的 Middleware(中间件),beforeAction 相当于前置中间件,afterAction 相当于后置中间件。

    到此这篇关于Yii中特殊行为ActionFilter使用的文章就介绍到这了,更多相关Yii特殊行为ActionFilter使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:PHP 99乘法表的几种实现代码
    下一篇:Laravel统一错误处理为JSON的方法介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Yii中特殊行为ActionFilter的使用方法示例 Yii,中,特殊,行为,ActionFilter,