2012-02-06 3 views
0

1. 서비스에 매개 변수를 전달 하시겠습니까?Symfony 2 서비스 컨테이너 매개 변수에 대한 질문

$container->setParameter('loader', $loader); 
$container->get('myservice'); 

내가 이런 식 로더는, 모든 서비스를 사용할 수없는 것입니다 가정 : 이미 services.xml 파일 (또는 YAML)에 정의되지 않은 경우는 , 서비스에 매개 변수 (들)을 통과 할 수있는 유일한 방법입니다 그냥 "myservice"?

2. 서비스 배열에 객체를 전달 하시겠습니까? [템플릿/DelegatingEngine 클래스는 생성자에 엔진 객체의 배열을, 그리고 내가 정의하는 방법을 잘 모릅니다하는 XML 파일 :

public function __construct(array $engines = array()) 
    { 
     $this->engines = array(); 
     foreach ($engines as $engine) { 
      $this->addEngine($engine); 
     } 
    } 

나는

<service id="myCustomeFramework.TemplateEngine" class="path\to\DelegateEngine" scope="prototype"> 
      <argument>how can i pass an array of engines here?</argument> 
     </service> 

답변

1
에 투입해야합니까

답글 1

예, 해당 매개 변수를 사용하고 매개 변수를 설정 한 후에 호출되는 모든 서비스에서 사용할 수 있습니다.

이 방법으로 그것을 할 필요가 XML을 사용하여 서비스에 인수로 배열을 전달하는 대답이

:

<service id="myCustomeFramework.TemplateEngine" class="path\to\DelegateEngine" scope="prototype"> 
    <argument type="collection"> 
     <argument key="key">value</argument> 
     <argument key="key">value</argument> 
     <argument key="key">value</argument> 
    </argument> 
</service> 
+0

는 <인수 키 = "키 때문에, 당신은 artberri 감사 "> 값은 엔진 객체를 전달해야합니다. 값 필드에 무엇을 넣어야합니까? – mr1031011

+0

@ mr1031011, 해결책 찾으세요? –

+0

@VidyVideni 아마도 서비스로 전달하거나 공장을 사용하여 수행 할 수 있습니까? – mr1031011