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 UTF8中文字符截断函数代码
Sep 11 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php跨域cookie共享使用方法
Feb 20 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
php微信支付之APP支付方法
Mar 04 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php实现网站留言板功能
2015/11/04 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
javascript中call apply 的应用场景
2015/04/16 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
JS实现旋转木马轮播图
2020/01/01 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
python 实现归并排序算法
2012/06/05 Python
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python字典操作实例详解
2017/11/16 Python
python浪漫表白源码
2019/04/05 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
解决Python二维数组赋值问题
2019/11/28 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
Python中Selenium模块的使用详解
2020/10/09 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
房地产推广策划方案
2014/05/19 职场文书
电子信息工程自荐信
2014/05/26 职场文书
开学第一周值周总结
2015/07/16 职场文书
学校教代会开幕词
2016/03/04 职场文书