Php 为什么Symfony 2.8服务中的请求对象为空?
在Symfony 2.8服务中,您可以使用以下服务:Php 为什么Symfony 2.8服务中的请求对象为空?,php,symfony,service,request,Php,Symfony,Service,Request,在Symfony 2.8服务中,您可以使用以下服务: services: app.admin_menu: class: GRF\AdminPanelBundle\Service\Menu shared: false arguments: [@request_stack] 和在役建造: public function __construct(RequestStack $request) { exit(var_dump($reques
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) { } }
如何访问服务中的当前请求???现在当前请求为空
RequestStack
是一个对象,其中包含多个请求(用于内部转发和esi)。要从中提取Request
对象,可以调用$Request=requestStack->getMasterRequest()代码>我有一个问题
解决方案是尽可能晚地尝试访问RequestStack对象,以使内核有机会填充它
本质上,不要尝试在构造函数中访问它
我将对它的访问权转移到一个稍后调用的方法中,它为我解决了这个问题
private $requestStack;
public function __construct(RequestStack $request)
{
$this->requestStack = $request;
}
public function outputRequestStack() {
exit(var_dump($this->requestStack));
}
您是否尝试过$request->getCurrentRequest()
?该服务是在请求被处理之前创建的。存储注入的requestStack,然后在实际需要时从中获取请求。$request->getCurrentRequest()为null Hanks Cerad,请求在服务构造中不可用,我可以在另一种方法中使用它。您仍然可以这样做,但需要将服务的范围设置为request(“范围:请求”)。这可能还有其他缺点。