Как получить маркер отладки при исключении?


Я написал свой собственный контроллер исключений и хочу ввести токен отладки как часть вывода.
Я посмотрел на webprofilertoolbarlistener, который похож на мой случай, но кажется, что ответ на исключение/ошибку имеет другой жизненный цикл.

Коллектор профилей всегда вызывается после моего слушателя, который находится в событии ответа.
Мой слушатель должен быть вызван после Коллектора профилей.

Как я могу достичь этого?

enter image description here

Author: CSchulz, 2015-02-13

2 answers

Я пытался использовать разные приоритеты, но, похоже, вам нужно полностью очистить кэш. Недостаточно перезагрузить страницу в режиме разработки.

После изменения приоритета на -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 или :

public static function getSubscribedEvents()
{
    return array(
        KernelEvents::RESPONSE => array('onKernelResponse', -128),
    );
}
 1
Author: CSchulz, 2015-02-17 13:45:06

Вы должны играть с приоритетами слушателей: я предполагаю, что у вас есть RequestDataCollector слушатель, у которого есть priority: 0, вы должны сделать его больше.

Или, другими словами, сделайте приоритет вашего слушателя -1

Более подробная информация о приоритете слушателя

 0
Author: Alexandru Olaru, 2015-02-13 07:54:47