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上传图片、删除图片实现代码
May 12 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
ucenter通信原理分析
Jan 09 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php 三元运算符实例详细介绍
Dec 15 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
星际争霸任务指南——神族
2020/03/04 星际争霸
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python如何统计序列中元素
2020/07/31 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python3 集合set入门基础
2020/02/10 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
团日活动策划书
2014/02/01 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
财务整改报告范文
2014/11/05 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
浅谈Python中的正则表达式
2021/06/28 Python
python获取字符串中的email
2022/03/31 Python