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 相关文章推荐
PHP中几个常用的魔术常量
Feb 23 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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调用三种数据库的方法(2)
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
新鲜出炉的js tips提示效果
2011/04/03 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
缓刑人员的思想汇报
2014/01/11 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
旷工检讨书1000字
2015/01/01 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python