cake php 调度过滤器
来源:互联网 发布:上海蓝光数据恢复 编辑:程序博客网 时间:2024/06/06 01:26
有时候需要对请求进行过滤,cake php中实现如下:
首先,在src/Routing/Filter创建所需的过滤器TrackingCookieFilter .php(/src/Routing/Filter/TrackingCookieFilter .php),内容如下:
<?phpnamespace App\Routing\Filter;use Cake\Event\Event;use Cake\Routing\DispatcherFilter;class TrackingCookieFilter extends DispatcherFilter{ public function beforeDispatch(Event $event) { $request = $event->getData('request'); $response = $event->getData('response'); if (!$request->getCookie('landing_page')) { $response->cookie([ 'name' => 'landing_page', 'value' => $request->here(), 'expire' => date('Y-m-d H:i:s', strtotime('+1 year +1 month +2 day', time())), ]); /*echo '<BR>Before htracking cookie response:<BR>'; dd($response);*/ } }}
创建HttpCacheFilter.php,内容如下:
<?phpnamespace App\Routing\Filter;use Cake\Event\Event;use Cake\Routing\DispatcherFilter;class HttpCacheFilter extends DispatcherFilter{ public function afterDispatch(Event $event) { $request = $event->getData('request'); $response = $event->getData('response'); if ($response->statusCode() === 200) { $response->sharable(true); $response->expires(strtotime('+1 day')); } }}
要想使用这两个过滤器则需要在config/bootstrap.php文件中加入如下代码:
use Cake\Routing\DispatcherFactory;DispatcherFactory::add('TrackingCookie');DispatcherFactory::add('HttpCache');
如果想要对某一个路由生效可以在后面加参数for,如:
DispatcherFactory::add('HttpCache', ['for' => '/front/articles']);
则只会对/front/articles
路由生效。
如果想要对某一个前缀下的路由使用控制器只要将前缀加进去即可,如front
前缀:
DispatcherFactory::add('HttpCache', ['for' => '/front']);
这样的话访问/front/articles、/front/user还是其他路由中包含front前缀的路由都会使用过滤器。
加限制条件的应用
如果要加上额外的使用条件,如只对get请求使用过滤器:
DispatcherFactory::add('TrackingCookie', [ 'when' => function ($request, $response) { return $request->is('get'); }
这样其他类型(post、put、patch、delete等)请求则不会使用过滤器。
原文地址:https://book.cakephp.org/3.0/en/development/dispatch-filters.html#conditionally-applying-filters
Author:leedaning
本文地址:http://blog.csdn.net/leedaning/article/details/75635632
阅读全文
0 0
- cake php 调度过滤器
- Cake PHP framework
- 调度程序过滤器
- php过滤器
- cake
- Cake
- Cake
- Cake
- Cake
- Cake
- Cake
- Cake
- cake
- Cake
- Cake
- Cake
- Cake
- Cake
- TensorFlow图像数据预处理
- CentOS 6 Telnet安装与防火墙设置
- fastdfs-java-client 使用指南
- 单例(Singleton)设计模式
- 关于Resource.load
- cake php 调度过滤器
- C# string类型和byte[]类型相互转换
- [NOIP2017模拟]board
- dsfas
- 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效
- WSDL笔记
- 【阶乘】阶乘相关的题
- Kali Linux 使用nmap进行局域网扫描
- hashMap等Map集合<K,V>为空情况