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 选项及相关信息函数库
Dec 04 PHP
php实现计数器方法小结
Jan 05 PHP
Yii使用技巧大汇总
Dec 29 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
php表单习惯用的正则表达式
Oct 11 PHP
php接口实现拖拽排序功能
Apr 23 PHP
PHP与以太坊交互详解
Aug 24 PHP
yii2 上传图片的示例代码
Nov 02 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php生成短网址示例
2014/05/05 PHP
javascript 打印页面代码
2009/03/24 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
为什么说python适合写爬虫
2020/06/11 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Java的类与C++的类有什么不同
2014/01/18 面试题
初中生物教学反思
2014/01/10 职场文书
物业总经理岗位职责
2014/02/28 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
先进班集体事迹材料
2014/12/25 职场文书
会计求职自荐信范文
2015/03/04 职场文书
公司业务员管理制度
2015/08/05 职场文书
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android