这篇文章将为大家详细讲解有关yii过滤器有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
过滤器
过滤器是控制器动作执行之前或之后执行的对象。 例如访问控制过滤器可在动作执行之前来控制特殊终端用户是否有权限执行动作, 内容压缩过滤器可在动作执行之后发给终端用户之前压缩响应内容。 (推荐学习:yii框架)
过滤器可包含预过滤(过滤逻辑在动作之前)或后过滤(过滤逻辑在动作之后), 也可同时包含两者。
使用过滤器
过滤器本质上是一类特殊的 行为, 所以使用过滤器和 使用行为一样。 可以在控制器类中覆盖它的 behaviors() 方法来声明过滤器,如下所示:
public function behaviors() { return [ [ 'class' => 'yii\filters\HttpCache', 'only' => ['index', 'view'], 'lastModified' => function ($action, $params) { $q = new \yii\db\Query(); return $q->from('user')->max('updated_at'); }, ], ]; }
控制器类的过滤器默认应用到该类的 所有 动作, 你可以配置 only 属性明确指定控制器应用到哪些动作。 在上述例子中,HttpCache 过滤器只应用到 index 和 view 动作。 也可以配置 except 属性 使一些动作不执行过滤器。
除了控制器外,可在 模块或应用主体 中申明过滤器。 申明之后,过滤器会应用到所属该模块或应用主体的 所有 控制器动作, 除非像上述一样配置过滤器的 only 和 except 属性。
注意: 在模块或应用主体中申明过滤器,在only 和 except 属性中使用路由 代替动作 ID, 因为在模块或应用主体中只用动作ID并不能唯一指定到具体动作。
当一个动作有多个过滤器时,根据以下规则先后执行:
预过滤
按顺序执行应用主体中 behaviors() 列出的过滤器。
按顺序执行模块中 behaviors() 列出的过滤器。
按顺序执行控制器中 behaviors() 列出的过滤器。
如果任意过滤器终止动作执行, 后面的过滤器(包括预过滤和后过滤)不再执行。
成功通过预过滤后执行动作。
后过滤
倒序执行控制器中 behaviors() 列出的过滤器。
倒序执行模块中 behaviors() 列出的过滤器。
倒序执行应用主体中 behaviors() 列出的过滤器。
关于“yii过滤器有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。