当我想添加一些自定义标头时,我有函数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"
路由器侦听器在您的侦听器之前被调用。
路由器 [https://github.com/symfony/http-kernel/blob/master/EventListener/RouterListener.php#L158](侦听器的优先级为 32(,其中侦听器的优先级为 0(默认值(。
如果将侦听器设置为具有比路由器侦听器更高的优先级,则它应该可以工作。
使用 YAML 的示例
services:
AppEventListenerYourListener:
tags:
-
name: kernel.event_listener
event: kernel.request
priority: 40