2012-03-07 63 views
1

我在我的Symfony2應用一個已經工作的樹枝延伸:Symfony2的:如何使局部的枝條延伸

namespace Company\MyBundle\Service; 

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

我現在想創建一個枝杈功能,itselfs了一些數據,並生成一個局部模板。但我的問題是:如何在我的樹枝擴展服務中獲得新的模板實例?

這裏是我當前的配置:

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

如果我現在添加arguments: [@templating]到配置,我得到一個(可以理解)循環引用除外。

+0

我不知道是否有可能,但您可以嘗試將模板引擎的範圍更改爲原型,以便始終注入一個新對象。有關範圍的更多信息,請參閱此處:http://symfony.com/doc/2.0/cookbook/service_container/scopes.html – Sgoettschkes 2012-03-07 10:20:56

回答

1

看來推薦的simple ways之一是直接注入容器並從那裏檢索模板引擎。如您所見,注入模板引擎會直接導致循環引用異常。

所以,注入@service_container你應該很好。這似乎也是諸如FOSFacebookBundle之類的軟件包所採用的方法。

+0

不錯,像魅力一樣工作。謝謝! – apfelbox 2012-03-07 10:41:08

+0

@apfelbox沒問題:-) – richsage 2012-03-07 10:44:18