有这项服务:
services:
app.admin_menu:
class: GRF\AdminPanelBundle\Service\Menu
shared: false
arguments: [@request_stack]
并在服务构造中:
public function __construct(RequestStack $request)
{
exit(var_dump($request));
}
并在浏览器中:
object(Symfony\Component\HttpFoundation\RequestStack)#261 (1) { ["requests":"Symfony\Component\HttpFoundation\RequestStack":private]=> array(0) { } }
如何在服务中访问当前请求?现在当前请求为空
答案 0 :(得分:2)
解决方案是尽可能晚地尝试访问RequestStack对象,以便内核有机会填充它。
基本上,不要尝试在构造函数中访问它。
我将它的访问权移到了一个稍后调用的方法中,它为我解决了它。
private $requestStack;
public function __construct(RequestStack $request)
{
$this->requestStack = $request;
}
public function outputRequestStack() {
exit(var_dump($this->requestStack));
}
答案 1 :(得分:1)
RequestStack
是一个对象,包含多个请求(用于内部转发和esi)。要从中提取Request
个对象,您可以调用$request = requestStack->getMasterRequest();