2013-05-05 65 views
0

我正在使用Symfony 2 /枝條。我有一個Twig擴展,其中包括重載日期過濾器以根據用戶偏好輸出自定義日期格式。枝條延伸可在新的枝條環境中使用

應用程序/配置/ services.yml:

twig.extension.static: 
    class: %twig_static_extension% # set elsewhere 
    tags: 
     - { name: twig.extension } 

我需要爲了從數據庫中渲染的模板來初始化一個新的Twig_Environment:

控制器:

$env = new \Twig_Environment(new \Twig_Loader_String()); 

但我發現這個新環境不會自動包含擴展名。

當然,我可以加載它,如下所示:

$env->addExtension(new FQCN\To\StaticExtension()); 

有什麼我可以做,使擴展提供給可能被使用的所有枝條的環境?

+0

了一個在TwigEnvironmentPass你真的需要*超載*日期過濾器?用Symfony2創建一個新的過濾器非常簡單,不需要費力去嘗試這種棘手的東西:) – 2013-05-05 12:14:00

+0

我對擴展本身沒有任何問題。我沒有把這個問題寫得太好。我希望當一個新的Twig_Environment被實例化時,任何被定義爲服務的Twig擴展都應該可用,但是我發現它不是。 – ncatnow 2013-05-06 06:11:13

+0

在Symfony2中,您不必關心'Twig_Environment',你的服務在後面被初始化,並且你可以在容器範圍內使用該環境作爲服務。如果您從數據庫中呈現樹枝字符串,可以使用[twigstringbundle](https://packagist.org/packages/r1pp3rj4ck/TwigstringBundle) – 2013-05-06 06:25:15

回答

-1

您可以創建一個編譯過程,並將它注入到你的捆綁,採取從TwigBundle