2013-05-05 89 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