2012-03-07 3 views
1

내 Symfony2 응용 프로그램에서 이미 작업 나뭇 가지 확장이 : 지금 itselfs 일부 데이터를 받아 부분 템플릿을 렌더링하는 나뭇 가지 함수를 만들Symfony2 : 나뭇 가지 확장에 부분 렌더링하는 방법

namespace Company\MyBundle\Service; 

class MyExtension extends \Twig_Extension 
{ 
    // ... 
} 

을 . 하지만 내 질문은 : 내 나뭇 가지 확장 서비스에서 새 템플릿 인스턴스를 얻으려면 어떻게해야합니까? 내가 지금 설정에 arguments: [@templating]를 추가하는 경우, 내가 (이해) 순환 참조 예외가

services: 
    twig.extension.my_extensions: 
     class: Company\MyBundle\Service\TwigExtension 
     tags: 
      - { name: twig.extension } 

:

여기에 내 현재 설정입니다.

+0

가능할지 모르겠지만 템플릿 엔진의 범위를 프로토 타입으로 변경하면 항상 새로운 개체가 주입됩니다. 범위에 대한 자세한 내용은 여기를 참조하십시오. http://symfony.com/doc/2.0/cookbook/service_container/scopes.html – Sgoettschkes

답변

1

simple ways 중 하나는 컨테이너를 직접 주입하고 거기에서 템플릿 엔진을 검색하는 것입니다. 앞서 보았 듯이 템플릿 엔진에 직접 삽입하면 순환 참조 예외가 발생합니다.

따라서 @service_container에 주사하면 좋을 것입니다. 이것은 FOSFacebookBundle 같은 번들에 의해 취해진 접근법 인 것 같습니다.

+0

니스는 매력과 같습니다. 감사! – apfelbox

+0

@apfelbox 아무 문제 :-) – richsage

관련 문제