【问题标题】: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 也应该适用于 WebDebugToolbarListenerdocumentation:

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

    【讨论】:

      【解决方案2】:

      您应该使用侦听器的优先级:我猜您的RequestDataCollector 侦听器具有priority: 0,您应该将其扩大。

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

      More details about listener priority

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-15
        • 2021-05-31
        • 2022-01-14
        • 2015-09-08
        • 2019-06-22
        • 2020-04-02
        • 1970-01-01
        相关资源
        最近更新 更多