Symfony заголовки onKernelRequest-> set не получены на @Route - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть функцияm onKernelRequest , когда я хочу добавить пользовательский заголовок (в моем случае api=true || $request->headers->set('api', "true")), и в целом Request $request я могу получить этот заголовок, но когда я попробую его в аннотации ошибка:

  • onKernelRequest :
public function onKernelRequest(RequestEvent $event)
{
    if (!$event->isMasterRequest()) { return; }

    $request = $event->getRequest();
    $request->headers->set('api', "true");
    return;
}
  • Маршрут
/* @Route(
 *     "/user/info/",
 *     name="get_user_info",
 *     methods={"GET"},
 *     condition="request.headers.get('api')"
 * )
  • Ошибка
Path almost matches, but Condition "request.headers.get('api')" does not evaluate to "true"

1 Ответ

0 голосов
/ 10 февраля 2020

Слушатель маршрутизатора вызывается перед вашим слушателем.

Маршрутизатор [https://github.com/symfony/http-kernel/blob/master/EventListener/RouterListener.php#L158] (слушатель listen имеет приоритет 32), где ваш слушатель имеет приоритет 0 (по умолчанию).

Если вы установите для слушателя более высокий приоритет, чем для прослушивателя маршрутизатора, он должен работать.

Пример использования YAML

services:
    App\EventListener\YourListener:
        tags:
            -
                name: kernel.event_listener
                event: kernel.request
                priority: 40
...