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新手上路(十一)
Oct 09 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
php中文验证码实现方法
Jun 18 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
长波知识介绍
2021/03/01 无线电
深入掌握include_once与require_once的区别
2013/06/17 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
nginx 设置多个站跨域
2021/03/09 Servers
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python素数检测实例分析
2015/06/15 Python
Python匹配中文的正则表达式
2016/05/11 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python实现猜拳小游戏
2020/04/05 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
移动通信行业实习自我鉴定
2013/09/28 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
从原生JavaScript到React深入理解
2022/07/23 Javascript