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代码
Aug 08 PHP
php header示例代码(推荐)
Sep 08 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php代码检查代理ip的有效性
Aug 19 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
Yii 框架使用Forms操作详解
May 18 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生成sitemap.xml地图函数
2013/11/13 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
一个Python最简单的接口自动化框架
2018/01/02 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python面向对象实现方法总结
2020/08/12 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
公司道歉信范文
2014/01/09 职场文书
初中英语教学反思
2014/01/25 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL