Заголовки Symfony onKernelRequest-> установить не получено на @Route
У меня есть функция 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 ответ
Решение
Слушатель маршрутизатора вызывается перед вашим слушателем.
Маршрутизатор [https://github.com/symfony/http-kernel/blob/master/EventListener/RouterListener.php слушатель слушателя имеет приоритет 32), где, поскольку ваш слушатель имеет приоритет 0 (по умолчанию).
Если вы установите для слушателя более высокий приоритет, чем слушатель маршрутизатора, он должен работать.
Пример использования YAML
services:
App\EventListener\YourListener:
tags:
-
name: kernel.event_listener
event: kernel.request
priority: 40