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 相关文章推荐
php5 and xml示例
Nov 22 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
php调用mysql数据 dbclass类
May 07 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php class类的用法详细总结
Oct 17 PHP
php不用正则验证真假身份证
Nov 06 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 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时间戳与日期的转换
2013/06/06 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
详解node中创建服务进程
2017/05/09 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python抓取百度查询结果的方法
2015/07/08 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
乡镇干部十八大感言
2014/02/17 职场文书
简单租房协议书
2014/10/21 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技