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

 更新时间:2020年10月18日 11:08:20   作者:琯琯  
这篇文章主要给大家介绍了关于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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 6种php上传图片重命名的方法实例

    6种php上传图片重命名的方法实例

    本文提供了6种php上传图片重命名的方法并对6种方法做了比较,肯定有一种合适你用的。
    2013-11-11
  • PHP封装分页函数实现文本分页和数字分页

    PHP封装分页函数实现文本分页和数字分页

    本文主要是给大家分享了一段PHP的封装好的分页函数,可以实现文本分页和数字分页两种形式,非常的实用,有需要的朋友可以参考下
    2014-10-10
  • 用HTML/JS/PHP方式实现页面延时跳转的简单实例

    用HTML/JS/PHP方式实现页面延时跳转的简单实例

    下面小编就为大家带来一篇用HTML/JS/PHP方式实现页面延时跳转的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • thinkPHP5框架实现分页查询功能的方法示例

    thinkPHP5框架实现分页查询功能的方法示例

    这篇文章主要介绍了thinkPHP5框架实现分页查询功能的方法,结合实例形式分析了thinkPHP5实现分页查询功能的相关控制器、模板等操作技巧,需要的朋友可以参考下
    2018-03-03
  • 利用PHP命令行模式采集股票趋势信息

    利用PHP命令行模式采集股票趋势信息

    本文介绍的是一个简单的股票采集工具,采集的同花顺股票趋势信息,使用php命令行模式编写。只完成了采集部分功能,将输出的数据复制到execl(或ET)分析,比任何后台都方便。下面一起来学习学习。
    2016-08-08
  • Laravel实现数据库迁移与支持中文的填充

    Laravel实现数据库迁移与支持中文的填充

    最近在学习Laravel数据库方面的内容,发现了一些资料不错整理出来分享给大家,下面这篇文章主要给大家介绍了关于Laravel实现数据库迁移与支持中文填充的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-11-11
  • PHP json_encode() 函数详解及中文乱码问题

    PHP json_encode() 函数详解及中文乱码问题

    这篇文章主要介绍了PHP json_encode() 函数详解及中文乱码问题的相关资料,需要的朋友可以参考下
    2015-11-11
  • CodeIgniter整合Smarty的方法详解

    CodeIgniter整合Smarty的方法详解

    这篇文章主要介绍了CodeIgniter整合Smarty的方法,结合实例形式分析了CodeIgniter3.0.3整合Smarty3.1.27的步骤与相关设置技巧,需要的朋友可以参考下
    2017-08-08
  • php curl获取到json对象并转成数组array的方法

    php curl获取到json对象并转成数组array的方法

    今天小编就为大家分享一篇php curl获取到json对象并转成数组array的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 关于laravel 子查询 & join的使用

    关于laravel 子查询 & join的使用

    今天小编就为大家分享一篇关于laravel 子查询 & join的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论