为什么我的kernel.response事件监听器不会修改我的响应?

时间:2017-08-11 13:54:57

标签: symfony

我没有找到我的后续kernel.response事件监听器不会在此修改我的响应的原因。你之前是否遇到过这个问题,或者是否有错误印刷线?

上下文:用户将在Symfony3下附加10项访问历史记录。

public function onResponse(FilterResponseEvent $event)
{
    $request = $event->getRequest();

    if(!$event->isMasterRequest() || !preg_match('#^dm_.*#', $request->get('_route'))){
        return;
    }

    $history = $request->cookies->get('history');
    if(!$history)$history = "[]";
    $history = json_decode($history, true);

    $addon = [
        'route' => $request->get('_route'),
        'route_params' => $request->attributes->get('_route_params'),
        'url' => $request->getRequestUri(),
        'date' => new \Datetime
    ];
    $history[] = $addon;
    $history = array_slice(
        $history,
        -10
    );

    $cookie = new Cookie('history', json_encode($history), time() + 3600);

    $response = $event->getResponse();
    $response->headers->setCookie($cookie);
}

我添加了一些var_dump(),以检查该事件是否被捕获(它是)。我还测试了在其他地方修改标头,它工作正常。所以,就在这里,我不明白为什么不这样做。

0 个答案:

没有答案