【问题标题】:How to retrieve the debug token on exception?如何在异常时检索调试令牌?
【发布时间】:2015-02-13 07:35:27
【问题描述】:
我已经编写了自己的 ExceptionController,并希望将调试令牌作为输出的一部分注入。
我查看了 WebProfilerToolbarListener,这与我的情况类似,但似乎异常/错误响应具有另一个生命周期。
ProfilerCollector 总是在我的监听器之后调用,它在响应事件上。
我的 Listener 需要在 ProfilerCollector 之后调用。
我怎样才能实现它?
【问题讨论】:
标签:
php
symfony
symfony-2.6
【解决方案1】:
我尝试过使用不同的优先级,但您似乎需要完全清除缓存。在开发模式下重新加载页面是不够的。
将优先级更改为 -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 也应该适用于 WebDebugToolbarListener 或 documentation:
public static function getSubscribedEvents()
{
return array(
KernelEvents::RESPONSE => array('onKernelResponse', -128),
);
}