首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Yii2自定义ActionFilter不能与定义为通配符的"only“一起使用

Yii2是一个流行的PHP框架,用于快速开发Web应用程序。在Yii2中,ActionFilter是一种用于在控制器动作执行之前或之后执行特定代码的机制。通常,我们可以通过在控制器类中定义一个过滤器方法来创建一个ActionFilter。

然而,Yii2中的自定义ActionFilter不能与定义为通配符的"only"一起使用。这是因为"only"属性用于指定应该应用过滤器的控制器动作列表,而自定义ActionFilter是通过在控制器类中定义一个过滤器方法来实现的。

当我们在控制器类中定义一个自定义ActionFilter时,它将应用于该控制器类中的所有动作。如果我们想要将过滤器应用于特定的动作,我们可以在过滤器方法中使用条件语句来检查当前执行的动作是否符合要求。

以下是一个示例,演示了如何在Yii2中创建自定义ActionFilter并与"only"属性一起使用:

代码语言:txt
复制
use yii\base\ActionFilter;

class CustomActionFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        if (in_array($action->id, ['action1', 'action2'])) {
            // 在这里执行过滤器逻辑
        }
        return parent::beforeAction($action);
    }
}

在上面的示例中,我们创建了一个CustomActionFilter类,继承自Yii2的ActionFilter类。在beforeAction方法中,我们使用in_array函数检查当前执行的动作是否为'action1'或'action2',如果是,则执行过滤器逻辑。

要将自定义ActionFilter与"only"属性一起使用,我们可以在控制器类中的behaviors方法中配置过滤器,如下所示:

代码语言:txt
复制
use yii\web\Controller;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'customFilter' => [
                'class' => CustomActionFilter::class,
                'only' => ['action1', 'action2'],
            ],
        ];
    }

    public function action1()
    {
        // 动作1的代码
    }

    public function action2()
    {
        // 动作2的代码
    }

    // 其他动作的代码
}

在上面的示例中,我们在behaviors方法中配置了一个名为'customFilter'的过滤器,并使用'only'属性指定应该应用过滤器的动作列表为'action1'和'action2'。

这样,当执行'action1'或'action2'时,CustomActionFilter将被应用,并执行相应的过滤器逻辑。对于其他动作,过滤器将不会被应用。

关于Yii2的更多信息和详细文档,请参考腾讯云的Yii2产品介绍链接地址:Yii2产品介绍

请注意,以上答案仅针对Yii2框架中自定义ActionFilter与"only"属性的使用,不涉及其他云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Yii2 进阶篇

过滤器 什么是过滤器 过滤器是控制器动作执行之前或之后需要执行代码。该代码以对象形式执行,则应该使用方式定义并申明。 过滤器本质上是一种特殊行为。...为什么使用过滤器 通常情况下,过滤器将代码绑定到所有的操作上,也就是说,每一个操作执行,都需要先或后执行过滤器,所以,可以用来执行权限检测、缓存处理等事情 在哪里使用过滤器 在控制器中,定义: public...function behaviors(){ Return [ [ ‘class’ => ‘实现类’, ] ]; } 表示定义了一个过滤器 过滤器位置 Yii2开发者定义了很多过滤器...过滤器位置.png 定义过滤器 在Yii2中,自定义过滤器,需要继承 yii\base\ActionFilter 类并覆盖 yii\base\ActionFilter::beforeAction() 和.../或 yii\base\ActionFilter::afterAction() 方法来创建动作过滤器 定义在beforeAction()中代码会在操作执行之前执行 定义在afterAction(

2K31

composer系列之三

一份菜单 - 解读composer.json各项内容 本文你介绍composer.json中各项。 name * 包名,它包括供应商名称和项目名称,使用 / 分开,比如下面的样子。...composer-plugin: 一个安装类型 composer-plugin 包,它有一个自定义安装类型,可以为其它包提供一个 installler。 仅在你需要一个自定义安装逻辑时才使用它。...require-dev (root-only) 这个列表是开发或测试等目的,额外列出依赖。可以使用 --no-dev 参数来跳过 require-dev 字段中列出包。...你可以用 classmap 生成支持支持自定义加载遵循 PSR-0/4 规范类库。要配置它指向需要目录,以便能够准确搜索到类文件。...因此如果你依赖于一个 dev(开发)包,你应该明确进行定义。 可用稳定性标识(按字母排序):dev、alpha、beta、RC、stable。 repositories 使用自定义包资源库。

86821

Composer安装及更新YII2框架遇到问题梳理

我们在使用YII2框架过程中,对于框架有两种安装方式,一种是使用官网归档文件,一种是使用Compoer包管理工具。...本文讨论问题集中在使用Compoer安装YII2框架及更新组件包,升级YII2主版本时遇到一些问题。 ? 前置条件 首先使用Composer包工具需要满足以下两个前提,区分操作系统。...1 电脑需要安装Composer包管理工具,并且全局可直接使用 2 安装Composer Asset插件,Asset插件需要合适版本。 两个条件在安装同时,都必须注意合适版本。...New personal access token 简单理解设置程序远程更新包时访问token,在github处于登录状态时,生成token,就可以畅通下载 形如https://api.github.com...以上解决问题路径是这样,发现目前YII2版本不支持PHP7及以上环境,于是使用Composer更新YII2框架版本,更新过程中一系列问题造成更新识别,依次定位到Asset插件问题并且更新对应版本

1.6K20

【asp.net core 系列】10 实战之ActionFilter

因为这个方法出镜率很高,大多数时候都会使用这个方法进行请求过滤。...小伙伴们应该对这个类要有一定概念,这个类是Action上下文类。它完整存在于一个Action生命周期,所以有时候可以通过ActionContext进行Action级数据传递(推荐)。...使用ActionFilter 在《【asp.net core 系列】9 实战之 UnitOfWork以及自定义代码生成》也就是上一篇中,介绍到了ActionFilter与普通特性类一致,可以通过标注控制器然后启用该...当然,在asp.net core 中添加了另外一种使用ActionFilter方式,Setup.cs中 public void ConfigureServices(IServiceCollection...如果需要使用asp.net core默认依赖注入可以使用 AddService进行配置。(依赖注入内容在后续会讲解)。 3.

62730

系统服务化构建-项目整体框架

1 功能与实际业务无关。...我们常见可以纳入基础功能范围有 短信服务,移动端推送功能服务,文件存储服务,固定基础服务,Excel Word文件导出等 业务功能组件 业务功能组件由具体业务模块构建而成,满足产品或市场人员需求为主...模块定义,组件边界决定于业务模型,需求定义,市场时机等多种因素。 基础功能组件与业务模块组件异同 1 解耦,稳定,可用 软件模块基本要求必不可少。 2系统中所处层析清晰,不可混用。...2临时性第三方组件,功能及稳定性待验证 3 不符合命名空间合作类库约束 常用公共方法库包括 数据类型转化,对象类型转换,日期自定义函数等。...注:以上借助于框架特性,以YII2 Module形式来组织代码,Module具体使用案例及生成规则不在此文章中讨论。

68220

聊聊Yii2和ThinkPHP5文件缓存

Yii2和ThinkPHP5缓存操作提供公共方法对比 Yii2缓存提供方法 get 获取缓存 set 设置缓存数据 exists 判断缓存是否存在 mset multiSet 方法别名,批量设置缓存...如果要实现原子操作自增自减,两个框架都需要开发者自己去实现。 Yii2缓存过期方式通过修改文件更改时间记录过期时间。...Yii2缓存有gc机制,在每次写入缓存时候会以一定概率删除过期缓存文件。ThinkPHP5 则是在读取缓存时候,如果缓存过期则删除。...Yii2缓存操作支持自定义数据序列化方法,默认使用serialize方式。 ThinkPHP5 只能是开发者在每次调用时候用自定义方法序列化在存入缓存或者使用默认serialize序列化。...如果读文件加了LOCK_NB标志,则读文件阻塞,直接读取失败!读文件先执行读锁,其他进程可读。写入文件必须等读锁释放。如果写文件加了LOCK_NB标志,则写文件阻塞,直接失败 文件状态缓存。

1.3K20

yii2实战之初见端倪PHP框架大PK安装yii2项目初始化配置服务小结

如果你对yii2不感兴趣,更希望你能抽空了解下,给yii2一个机会,让她展现魅力,我相信,不喜欢用yii2的人,绝大部分是使用姿势不对。好比普通人拿屠龙宝刀,只能用于切西瓜,还嫌其笨重。...yii2享誉盛久,绝非浪得虚名。 那么,现在开始我们yii2之旅吧, 少年... ? 加油,少年 安装yii2 现代化php框架都支持用composer安装,yii2自然也例外。...很悲剧是,由于众所周之原因,国内访问国外网络很慢,虽然composer大多数PHP项目作了中国镜像,可对于yii2有些插件并没有作镜像。...yii2使用composer安装失败原因 ? 我也很绝望啊 于是,我放弃挣扎了,直接下载文档包 归档文件下载地址 ?...查看yii版本 项目建立后第一件事,就是将项目推送到远程git仓库,相信我,使用git是你写任何代码之前最明智选择。由于github速度较慢,建议用国内gitee作为个人代码仓库。

1.1K50

如何让ASP.NET Web APIAction方法在希望Culture下执行

目录 一、两个辅助扩展方法 二、第1种方案:自定义ActionFilter 三、第2种方案:自定义HttpActionDescriptor 四、第...3种方案:自定义HttpActionInvoker 五、第4种方案:HttpController创建一个基类 一、两个辅助扩展方法 我们针对HttpRequestMessage定义了如下两个扩展方法...ActionFilter 我想这应该是大家最容易想到解决方案,因为ActionFilter可以注册一些回调操作在目标Action方法执行前后被自动调用。...HttpActionDescriptor,要让我们自定义ExtendedReflectedHttpActionDescriptor被使用,我们得对应HttpActionSelector。...ASP.NET Web API默认使用HttpActionSelector类型ApiControllerActionSelector,我们自定义ExtentedApiControllerActionSelector

1.2K90

PHP如何使用Composer来自动加载项目文件?

在生产环境下,这个策略一般也会与 Level-1 一起使用, 执行composer dump-autoload -o --apcu, 这样,即使生产环境下生成了新类,只需要文件系统中查找一次即可被缓存...composer-plugin: 一个安装类型 composer-plugin 包,它有一个自定义安装类型,可以为其它包提供一个 installler,我们也可以定义一个自定义类型。.../vender/composer/autoload_psr4.php,增加自动加载对应关系,之后composer将自动加载指定目录下类; repositories,非必选属性,表示使用自定义安装源...prs-4规范 在PSR-4里边需要定义一个命名空间前缀到路径映射(相对于包根目录),如果命名空间前缀Foo\指向一个文件目录src/,当自动加载一个类时,比如Foo\Bar\Baz类,那么这个类路径...在 PSR-0 标准中,您必须使用命名空间来定义库。完全限定类名必须反映\\(\)*结构。此外,您类必须保存在遵循与命名空间相同目录结构文件中。

3.1K40

Yii2使用驼峰命名形式访问控制器 转

yii2使用时候,访问控制器时候,如果控制器名称是驼峰命名法,那访问url中要改成横线形式。...刚开始以为YII2中肯定有这样设置,然后就去google了下,发现都说不行,自己去看了下,果然,框架里面直接是写死:(源码)\vendor\yiisoft\yii2\base\Controller.php...这点有点low,不过问题倒不大,这个代码很容易理解,我们发现,其实如果在这个源码基础上再加上一个else就可以搞定,但是还是建议直接改源码。...由于我们项目用yii2advanced版本,并且里面有多个项目,还要保证其他项目使用正常(也就是个别的控制器才需要使用驼峰命名方式访问),这也容易: 我们可以写个components处理:\common...ok ,这就可以支持使用驼峰形式访问了,当然这个形式很多,也可以写成一个控制器,然后其它控制器继承这个控制器就行了,但是原理是一样 如何使用

1.2K20

使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录

在asp.net mvc 中 webapi 和 mvc 处理消息是两个不同管道,Asp.net mvc 和 webapi 我们提供 ActionFilterAttribute 拦截器,通过 重写 ... 这个全局管道里面注册 ActionFilter ,位置在App_Start目录>FilterConfig 类>RegisterGlobalFilters 方法 使用参数filters , filters.Add...,在你自定义Attribute 时,需要遵守契约规范, 【YourFilterName】+Attribute ,所以我filter名字 OperateTrackAttribute using System...public class OperateTrackAttribute : ActionFilterAttribute { /// /// 自定义参数...OperateTrackAttribute 注册webapi全局 ActionFilter 那么我们如果有不想过滤action 时,可以通过 检查 方法或类顶部特性   来对那些不需要接受拦击

4K30

yii2自定义验证规则rules以及rules失效解决方案

当然啦,废话说在前头,咱们重点喃,是要利用ActiveForm,然后怎么去实现自定义验证规则。...先来说说场景: 条件:①、有两个字段分别是A和B ②、A有两个值分别是1和2 需求是:当用户选择A值等于1时候,B值必须填写,当A值等于2时候,B写也没关系。其中A必选。...以上只是举了一个简单例子,可以根据具体需求应用。 注意项: 在当前例子中,如果B字段空或者已经在其他验证中失败时,我们自定义rules规则不会生效。...validate之后打印$model->erros看提示信息 确保该值真,否则失效,除非强制非真有效 另需要提醒是: 自定义验证方法不支持客户端校验,也就是说鼠标失去焦点后不会自动校验,只有在表单提交后才会校验...' => ['id' => 1]],该值会被传递到自定义方法中。

2.8K51

快速入门系列--MVC--05行

首先介绍异步Action,之前学习Controller时候已经知道默认情况下Controller执行是异步,在继承异步Controller情况,我们代码中方法一般是同步Action,我们可以通过使用...还有一点需要注意是,Dependency默认使用会将反射创建对象缓存到CurrentCache属性中,而不会使用当前新设置映射重新获取。...框架使用一个FilterInfo类型统一管理内置筛选器,之后开始按照执行顺序详细介绍各个内置筛选器。...正向执行时,一旦某一个ActionFilter将AcionExecuteingContextResult设置ActionResult对象,后续ActionFilter和目标Action将不会执行。...需要注意一点是,HandleErrorAttribute只有在允许自定义错误时才有效, 蒋老师在书中提到,异常处理是程序员最熟悉也最难掌握一块概念了

53970
领券