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中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php常量详细解析
Oct 27 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
利用php生成验证码
Feb 23 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
PHP日期和时间函数的使用示例详解
Aug 06 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Python单链表简单实现代码
2016/04/27 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python读取LMDB中图像的方法
2018/07/02 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
大学毕业感言100字
2014/02/03 职场文书
新年寄语大全
2014/04/12 职场文书