2016-07-21 18 views
4

は、このサービスを持っている:なぜsymfony 2.8サービスのリクエストオブジェクトが空ですか? 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) { } } 

サービスで、現在の要求にアクセスすることができますか?現在のリクエストはnullです

+1

'$ request-> getCurrentRequest()'を試しましたか? –

+3

要求が処理される前にサービスが作成されています。注入されたrequestStackを格納し、実際に必要なときにリクエストを取得します。 – Cerad

+0

$ request-> getCurrentRequest()はヌルです – Fadakar

答えて

1

RequestStackは、いくつかのリクエスト(内部転送とesiで使用される)を含むオブジェクトです。 Requestオブジェクトをそれから抽出するには、$request = requestStack->getMasterRequest();

2

私はsimilar issueでした。

解決策は、できるだけ遅くRequestStackオブジェクトにアクセスして、カーネルにそれを設定する機会を与えることです。

基本的に、コンストラクタでアクセスしないでください。

私はそれを後で呼び出されるメソッドに移動し、それを解決しました。

private $requestStack; 

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

public function outputRequestStack() { 
    exit(var_dump($this->requestStack)); 
} 
関連する問題