如何在异常上检索调试令牌?

时间:2015-02-13 07:35:28

标签: php symfony symfony-2.6

我编写了自己的 ExceptionController ,并希望将调试令牌作为输出的一部分注入。
我查看了 WebProfilerToolbarListener ,这与我的情况类似,但似乎异常/错误响应有另一个生命周期。

ProfilerCollector 总是在我的侦听器之后调用,该侦听器位于响应事件上。
我的监听器需要在 ProfilerCollector 之后调用。

我怎样才能实现它?

enter image description here

2 个答案:

答案 0 :(得分:1)

我尝试使用不同的优先级,但似乎您需要完全清除缓存。在开发模式下重新加载页面是不够的。

将优先级更改为 -150 ,如下所示。

profiler_link_listener:
    class:Nerdhive\TheNetwork\TwigBundle\EventListener\ProfilerLinkListener
    priority: -150
    tags:
        - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }

enter image description here

您可以检索调试令牌,如下所示:

public function onKernelResponse(FilterResponseEvent $event)
{
    $response = $event->getResponse();
    $token = $response->headers->get('X-Debug-Token');
    // Do here your stuff
}

一般来说 -129 也适用于 WebDebugToolbarListener documentation

public static function getSubscribedEvents()
{
    return array(
        KernelEvents::RESPONSE => array('onKernelResponse', -128),
    );
}

答案 1 :(得分:0)

你应该优先考虑听众:我猜你的RequestDataCollector听众有priority: 0,你应该把它做得更大。

或者换句话说,优先考虑你的听众-1

More details about listener priority