Symfony onKernelRequest headers->设置不在@Route 上收到

Symfony onKernelRequest headers->set dont received on @Route

我有功能 onKernelRequest 当我想添加一些自定义 header(在我的例子中 api=true||$request->headers->set('api', "true"))和所有 Request $request 我都能得到 header 但是当我在注释上尝试它时它失败了:

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"

路由器侦听器在您的侦听器之前被调用。

路由器 [https://github.com/symfony/http-kernel/blob/master/EventListener/RouterListener.php#L158](listener 侦听的优先级为 32),而您的侦听器的优先级为 0(默认值)。

如果您将侦听器设置为比路由器侦听器具有更高的优先级,它应该可以工作。

一个使用 YAML 的例子

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