内核终止后,Symfony4访问RequestStack

时间:2018-07-13 12:13:23

标签: service request kernel symfony4

KernelEvents::TERMINATE之后,我触发并调度了一堆事件来处理。我的一项服务依赖于有关请求的详细信息,因此我从Symfony自动注入RequestStack。可悲的是,内核终止后,该请求似乎不可访问。 getCurrentRequestgetMasterRequestgetParentRequest之类的所有函数都返回null

我可以提取所需的值,并在事件中将其发送出去,但这似乎有点多余。无论如何,在内核终止后我是否可以拥有可以访问该请求的服务?

1 个答案:

答案 0 :(得分:0)

您的意思是真的“终止后”吗?如果您可以将其包括在“终止”中,则非常简单-index.php中的主要php流如下:

$request = Request::createFromGlobals();
$response = $kernel->handle($request);
...
$kernel->terminate($request, $response);

因此,即使RequestStack已为空,原始$requestkernel.terminate事件期间以及其他事件中仍处于“活动状态”,这是事件的参数-因此易于重用那里,例如

public function onKernelTerminate(PostResponseEvent $event)
{
    $request = $event->getRequest());
}

希望这至少对其他读者有帮助:-)