PHP文件调度器调度,cake php 调度过滤器

有时候需要对请求进行过滤,cake php中实现如下:

首先,在src/Routing/Filter创建所需的过滤器TrackingCookieFilter .php(/src/Routing/Filter/TrackingCookieFilter .php),内容如下:

<?php namespace 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 '
Before htracking cookie response:
'; dd($response);*/ } } }

创建HttpCacheFilter.php,内容如下:

namespace 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等)请求则不会使用过滤器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值