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


Posted in PHP onOctober 18, 2020

新建 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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
jQuery 源码分析笔记
May 25 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
PHP验证码生成原理和实现
Jan 24 PHP
python进程与线程小结实例分析
Nov 11 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
laravel5 Eloquent 实现事务方式
Oct 21 PHP
PHP 99乘法表的几种实现代码
Oct 13 #PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 #PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 #PHP
如何利用PHP实现上传图片功能详解
Sep 24 #PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 #PHP
phpstudy隐藏index.php的方法
Sep 21 #PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 #PHP
You might like
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
python中bisect模块用法实例
2014/09/25 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
在职证明格式样本
2015/06/15 职场文书
《搭石》教学反思
2016/02/18 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python