2016-07-21 8 views
4

in Symfony 2.8 Service haben diesen Service:Warum Anfrage-Objekt in Symfony 2.8 Service ist leer?

services: 
    app.admin_menu: 
     class: GRF\AdminPanelBundle\Service\Menu 
     shared: false 
     arguments: [@request_stack] 

und in Service-Konstrukt:

public function __construct(RequestStack $request) 
{ 
    exit(var_dump($request)); 
} 

und in Browser:

object(Symfony\Component\HttpFoundation\RequestStack)#261 (1) { ["requests":"Symfony\Component\HttpFoundation\RequestStack":private]=> array(0) { } } 

wie können aktuelle Anforderung in Dienst zugreifen ??? Jetzt aktuelle Anfrage ist null

+1

Haben Sie versucht mit '$ request-> getCurrentRequest()'? –

+3

Der Dienst wird erstellt, bevor die Anforderung verarbeitet wird. Speichern Sie den injizierten requestStack und holen Sie sich die Anfrage, wenn Sie sie benötigen. – Cerad

+0

$ anfrage-> getCurrentRequest() ist null – Fadakar

Antwort

1

RequestStack ist ein Objekt, das mehrere Anfragen enthalten (für interne Weiterleitung und esi verwendet). Um Request Objekt daraus zu extrahieren können Sie $request = requestStack->getMasterRequest();

2

anrufen Ich hatte eine similar issue.

Die Lösung besteht darin, so spät wie möglich auf das RequestStack-Objekt zuzugreifen, um dem Kernel die Möglichkeit zu geben, es zu füllen.

Im Wesentlichen versuchen Sie nicht, es im Konstruktor zuzugreifen.

Ich habe meinen Zugriff darauf in eine Methode verschoben, die später aufgerufen wird und es für mich gelöst hat.

private $requestStack; 

public function __construct(RequestStack $request) 
{ 
    $this->requestStack = $request; 
} 

public function outputRequestStack() { 
    exit(var_dump($this->requestStack)); 
}