开发Yii2过滤器并通过behaviors()行为调用(转)
在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),//过滤器
'rules' => [
[
'actions' => ['login', 'error','index'],
'allow' => true,
],
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),//过滤器
'actions' => [
'logout' => ['post'],
],
],
];
}
注意代码中加亮的两行,这里调用的类,我们都称之为过滤器。在controller中调用过滤器,可以控制当前controller中的所有action,我们也可以在模块(module)或是应用主体中调用,来控制整个模块或是整个应用。
Yii2提供了如下过滤器:
AccessControl
ContentNegotiator
Cors
HttpCache
PageCache
RateLimiter
AuthMethod
模仿这些过滤器,我们也可以开发自己的过滤器。
还是把测试的过滤器放到frontend/libs里,新建文件frontend/libs/TestFilter.php
<?php
namespace frontend\libs;
use Yii;
use yii\base\Action;
use yii\base\ActionFilter;
class TestFilter extends ActionFilter
{
//在action之前运行,可用来过滤输入
public function beforeAction($action) {
echo '在调用action前显示<br/>';
return TRUE;//如果返回值为false,则action不会运行
}
//在action之后运行,可用来过滤输出
public function afterAction($action, $result) {
return $result.'在调用action后显示<br/>';//可以对action输出的$result进行过滤,retun的内容会直接显示
}
}
然后新建 文件frontend/controller/TestController.php
<?php
namespace frontend\controllers;
use yii\web\controller;
class TestController extends Controller {
public function behaviors() {
return [
'test' => [
'class' => 'frontend\libs\TestFilter'//调用过滤器
]
];
}
public function actionFilter() {
return '当前action显示<br/>';//返回的内容会递交给过滤器,由afterAction进行处理
}
}
最后,测试显示结果为:
在调用action前显示
当前action显示
在调用action后显示
过滤器完成。
开发Yii2过滤器并通过behaviors()行为调用(转)的更多相关文章
- 开发Yii2过滤器并通过behaviors()行为调用
在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors() { ...
- 《C#微信开发系列(3)-获取接口调用凭据》
3.0获取接口调用凭据 ①接口说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留 ...
- ABP开发框架前后端开发系列---(10)Web API调用类的简化处理
在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...
- ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用
在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...
- Spring AOP开发时如何得到某个方法内调用的方法的代理对象?
Spring AOP开发时如何得到某个方法内调用的方法的代理对象? 问题阅读起来拗口,看代码 在方法中调用其他方法很常见,也经常使用,如果在一个方法内部调用其他方法,比如 public class U ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 外部服务调用、内部服务调用优化,面向服务化的
现在的信息系统越来越复杂,越来越庞大,不仅需要内部是一个整体,而且还需要提供很多对外的服务调用. 1:别人如何调用最方便?用不同的开发语言调用.例如app.手持设备.服务器.2:服务的返回状态是什么样 ...
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录, ...
- YII2 过滤器 filters
使用过滤器 过滤器本质上是一类特殊的 行为,所以使用过滤器和 使用 行为一样. 可以在控制器类中覆盖它的 yii\base\Controller::behaviors() 方法来申明过滤器, 如下所示 ...
- 微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)
上一节课,我给大家分享了微信API接入以及事件推送的回复,这是微信开发的第二节课,重点给说一说单图文回复,多图文回复,access_token,微信SDK. 公众号消息回复很多种形式,常见的形式有,文 ...
随机推荐
- word 文档如何加密
给Word文档加密主要有以下几个方法:文件加密文件菜单设置:1.打开需要加密的Word文档.2.选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡.3.分别在 ...
- [Javascript] Function Expression Ex, Changing Declarations to Expressions
Inside the Haunted Hickory House file, developers for the Forest of Function Expressions Theme Park ...
- [Backbone]2. More detail in Models
Our Appointment model doesn't seem too useful yet. Add two default attributes, title as the string & ...
- 11g relocate scan ip
今天安装了Oracle 11.2.0.4的数据库,由于在安装GRID软件是,跑脚本的时候是现在节点2上跑的,跑完之后然后在节点1上跑.发现我的scan_ip在节点2上,我想把scan_ip reloc ...
- pcapng文件的python解析实例以及抓包补遗
为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...
- java面试第十七天
5.0新特性: 泛型: 泛型的形式: <E> <E extends 类型> <E extends Numner&comparator> 类名&接口 ...
- 恭喜您成为2014年度Microsoft MVP!
- 新浪微博 使用OAuth2.0调用API
# -*- coding: cp936 -*- #python 2.7.10 #xiaodeng #新浪微博 使用OAuth2.0调用API #微博开放接口的调用,都需要获取用户的身份认证.目前微博开 ...
- /etc/fstab 参数详解(转)
转自:http://blog.csdn.net/duyiwuer2009/article/details/8644753/ /dev/hda5 /home/new ...
- Chrome实用调试技巧
如今Chrome浏览器无疑是最受前端青睐的工具,原因除了界面简洁.大量的应用插件,良好的代码规范支持.强大的V8解释器之外,还因为Chrome开发者工具提供了大量的便捷功能,方便我们前端调试代码,我们 ...