Yii中特殊行为ActionFilter的使用方法示例

 更新时间:2020-10-18 12:16:31   作者:佚名   我要评论(0)

新建 app\filters\LoggingFilter 继承 yii\base\ActionFilter
LoggingFilter 的功能: 在指定请求的 action 前后各记录一条日志


<&#63;php

namespace app\filters

新建 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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Yii中特殊行为ActionFilter的使用方法示例

    Yii中特殊行为ActionFilter的使用方法示例

    新建 app\filters\LoggingFilter 继承 yii\base\ActionFilter LoggingFilter 的功能: 在指定请求的 action 前后各记录一条日志 <&#63;php namespace app\filters
    2020-10-18
  • 详解VUE中的插值( Interpolation)语法

    详解VUE中的插值( Interpolation)语法

    背景分析 在传统的html页面中我们可以定义变量吗?当然不可以,那我们假如希望通过变量的方式实现页面内容的数据操作也是不可以的。当然我们可以在服务端通过定义ht
    2020-10-18
  • 你所不知道的Spring自动注入详解

    你所不知道的Spring自动注入详解

    自动注入和@Autowire @Autowire不属于自动注入! 注入方式(重要) 在Spring官网上(文档),定义了在Spring中的注入方式一共有两种:set方法和构造函数。 也就是说
    2020-10-18
  • Anaconda+spyder+pycharm的pytorch配置详解(GPU)

    Anaconda+spyder+pycharm的pytorch配置详解(GPU)

    第一步 : 从清华大学开源软件镜像站下载Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/&#63;C=M&O=D 安装过程中需要勾选如下图 装
    2020-10-18
  • Android Studio配置(Android Studio4.1为例)

    Android Studio配置(Android Studio4.1为例)

    Android Studio下载(下文统称AS) AS最新版下载请戳:AS下载 Android SDK下载 SDK安装器下载 SDK安装器下载请戳:SDK下载 然后根据你的电脑选择合适版本
    2020-10-18
  • mysql对于模糊查询like的一些汇总

    mysql对于模糊查询like的一些汇总

    1、常见用法: (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句
    2020-10-18
  • 如何搭建一个完整的Vue3.0+ts的项目步骤

    如何搭建一个完整的Vue3.0+ts的项目步骤

    相信9月18日尤大大的关于Vue3.0的发表演讲大家一定有所关注,现在Vue3.0 也已经进入RC阶段(最终产品的候选版本,如果没有问题则可发布成为正式版本)。所以Vue3.0的
    2020-10-18
  • Android studio 4.1打包失败和插件错误提示的解决

    Android studio 4.1打包失败和插件错误提示的解决

    一、Android studio 升级4.1,Android Gradle插件从4.0.2升级到4.1.0后打包失败,回退到4.0.2后打包正常。 错误信息: &#8226;What went wrong: Execution fa
    2020-10-18
  • AndroidStudio升级4.1坑(无法启动、插件plugin不好用、代码不高亮)

    AndroidStudio升级4.1坑(无法启动、插件plugin不好用、代码不高亮)

    上班坐稳,打开AS看到studio有更新,于是就点击升级,4.1版本,看更新日志:bug修复什么什么一大堆,感觉挺好的,应该做了不少优化,结果升级完后就无法启动了,于是
    2020-10-18
  • Nginx代理同域名前后端分离项目的完整步骤

    Nginx代理同域名前后端分离项目的完整步骤

    前后端分离项目,前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。 以 vue + php 项目为例。直接上 server 模块的 nginx 配置。 server { listen
    2020-10-18

最新评论