2017-03-02 3 views
0

Ich möchte einen Dienst so konfigurieren, dass automatisch ein vorhandener DI-Container in ihn injiziert wird. Meine ContentQuery Klasse bereits extends eine andere Klasse, also muss es stattdessen die ContainerAwareInterface implementieren und konfigurieren die tatsächliche Injektion unter Verwendung eines call Block:Wie injiziere ich den Symfony DI Container selbst in einen Dienst?

<services> 
    <service id="my_module.model.content_query" class="MyModule\Model\ContentQuery"> 
    <call method="setContainer"> 
     <argument type="service" id="container" /> 
    </call> 
    </service> 
</services> 

Das Problem ist, dass ich weiß nicht, wie die Container selbst in der XML zu identifizieren . Unter Verwendung der obigen Konfiguration, bekomme ich diesen Fehler:

the service "my_module.model.content_query" has a dependency on a non-existent service "container"

würde ich lieber nur das tun in PHP, die ich glaube, ich könnte ziemlich leicht herausfinden, aber die Entscheidung XML zu verwenden, ist aus meiner Hand zu diesem Zeitpunkt . Gibt es eine Möglichkeit, die Container-Instanz als Service zu identifizieren?

Antwort

0

Welp. Ungefähr eine Minute nach dem Posten habe ich es herausgefunden. : P

gerade benötigt id="service_container" statt nur "Container" zu spezifizieren:

<services> 
    <service id="my_module.model.content_query" class="MyModule\Model\ContentQuery"> 
    <call method="setContainer"> 
     <argument type="service" id="service_container" /> 
    </call> 
    </service> 
</services> 
+2

app/console debug: Container ist dein Freund – Cerad

Verwandte Themen