Symfony onKernelRequest headers->设置不在@Route 上收到
Symfony onKernelRequest headers->set dont received on @Route
我有功能 onKernelRequest 当我想添加一些自定义 header(在我的例子中 api=true
||$request->headers->set('api', "true")
)和所有 Request $request
我都能得到 header 但是当我在注释上尝试它时它失败了:
- 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"
路由器侦听器在您的侦听器之前被调用。
路由器 [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
我有功能 onKernelRequest 当我想添加一些自定义 header(在我的例子中 api=true
||$request->headers->set('api', "true")
)和所有 Request $request
我都能得到 header 但是当我在注释上尝试它时它失败了:
- 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"
路由器侦听器在您的侦听器之前被调用。
路由器 [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