2017-03-02 66 views
0

我想配置一個服務來自動將一個現有的DI容器注入到它。我ContentQuery類已經extends另一個類,所以它必須改爲實行ContainerAwareInterface和使用call塊配置實際注射:如何將Symfony DI容器本身注入到服務中?

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

的問題是,我不知道如何來識別XML容器本身。使用上面的配置,我得到這個錯誤:

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

我寧願只是這樣做在PHP中,我認爲我能想出很容易,但是要使用XML的決定是從我手中的這個時候。那麼有沒有辦法將Container實例識別爲服務?

回答

0

Welp。發佈後大約一分鐘,我就明白了。 :P

只需要指定id="service_container",而不是僅僅 「容器」:

<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

應用程序/控制檯調試:容器是你的朋友 – Cerad