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

How to retrieve the debug token on exception?

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

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

之后调用

如何实现?

你应该调整听众的优先级:我猜你有 RequestDataCollector 个有 priority: 0 的听众,你应该把它变大。

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

More details about listener priority

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

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

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

您可以像下面这样检索调试令牌:

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

一般而言,-129 也应该适用于 WebDebugToolbarListenerdocumentation:

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