在KernelEvents::TERMINATE
之后,我触发并调度了一堆事件来处理。我的一项服务依赖于有关请求的详细信息,因此我从Symfony自动注入RequestStack。可悲的是,内核终止后,该请求似乎不可访问。 getCurrentRequest
,getMasterRequest
和getParentRequest
之类的所有函数都返回null
。
我可以提取所需的值,并在事件中将其发送出去,但这似乎有点多余。无论如何,在内核终止后我是否可以拥有可以访问该请求的服务?
答案 0 :(得分:0)
您的意思是真的“终止后”吗?如果您可以将其包括在“终止”中,则非常简单-index.php中的主要php流如下:
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
...
$kernel->terminate($request, $response);
因此,即使RequestStack
已为空,原始$request
在kernel.terminate
事件期间以及其他事件中仍处于“活动状态”,这是事件的参数-因此易于重用那里,例如
public function onKernelTerminate(PostResponseEvent $event)
{
$request = $event->getRequest());
}
希望这至少对其他读者有帮助:-)