2017-03-02 1 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을 사용하기로 결정이 시간에 내 손에서입니다 . 그렇다면 컨테이너 인스턴스를 서비스로 식별하는 방법이 있습니까?

답변

0

웰프. 게시 후 약 1 분 나는 그것을 알아 내었다. : 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

관련 문제