Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Symfony 2.8服务中的请求对象为空?_Php_Symfony_Service_Request - Fatal编程技术网

Php 为什么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

在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($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(“范围:请求”)。这可能还有其他缺点。