Symfony2:如何在Twig扩展中渲染分部


Symfony2: How to render partial in Twig extension

我的Symfony2应用程序中有一个已经在工作的Twig扩展:

namespace Company'MyBundle'Service;
class MyExtension extends 'Twig_Extension
{
    // ...
}

我现在想创建一个Twig函数,它本身会获取一些数据并呈现一个部分模板。但我的问题是:如何在我的trick扩展服务中获得一个新的模板实例

这是我当前的配置:

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

如果我现在将arguments: [@templating]添加到配置中,我会得到一个(可以理解的)循环引用异常。

推荐的简单方法之一似乎是直接注入容器并从中检索模板引擎。正如您所看到的,在模板引擎中注入直接导致循环引用异常。

所以,注入@service_container,你就应该很好。这似乎也是FOSFacebookBundle等捆绑包所采用的方法。