枝条延伸可在新的枝条环境中使用
问题描述:
我正在使用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());
有什么我可以做,使扩展提供给可能被使用的所有枝条的环境?
答
您可以创建一个编译过程,并将它注入到你的捆绑,采取从TwigBundle
了一个在TwigEnvironmentPass你真的需要*超载*日期过滤器?用Symfony2创建一个新的过滤器非常简单,不需要费力去尝试这种棘手的东西:) – 2013-05-05 12:14:00
我对扩展本身没有任何问题。我没有把这个问题写得太好。我希望当一个新的Twig_Environment被实例化时,任何被定义为服务的Twig扩展都应该可用,但是我发现它不是。 – ncatnow 2013-05-06 06:11:13
在Symfony2中,您不必关心'Twig_Environment',你的服务在后面被初始化,并且你可以在容器范围内使用该环境作为服务。如果您从数据库中呈现树枝字符串,可以使用[twigstringbundle](https://packagist.org/packages/r1pp3rj4ck/TwigstringBundle) – 2013-05-06 06:25:15