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 按指定元素值去除数组元素的实现方法
Nov 04 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
PHPMailer邮件发送的实现代码
May 04 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
PHP中使用curl入门教程
Jul 02 PHP
PHP常用技巧汇总
Mar 04 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PHP重载基础知识回顾
Sep 10 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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
JavaScript创建命名空间的5种写法
2014/06/24 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
Python中的闭包实例详解
2014/08/29 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
Python制作爬虫抓取美女图
2016/01/20 Python
python递归函数绘制分形树的方法
2018/06/22 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python如何支持并发方法详解
2020/07/25 Python
python FTP编程基础入门
2021/02/27 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
费用会计岗位职责
2014/01/01 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
2015入党自传书范文
2015/06/26 职场文书