在 Symfony 中激活 StringLoader Twig 扩展


Activate StringLoader Twig Extension in Symfony

我正在尝试在Symfony 2.3项目中激活Twig StringLoader扩展,但无法正确使用yaml语法。

这篇文章指的是Heyflynn在一篇处理完全相同问题的帖子中的答案,但提供了一个不起作用的解决方案(对我来说)。

在我的app/config/config.yml中写以下行只是给了我以下例外:

# app/config/config.yml
acme.twig.extension.loader:
class:        Twig_Extension_StringLoader
tags:
     - { name: 'twig.extension' }

给我这个:

FileLoaderLoadException:无法从".../app/config/config_dev.yml"导入资源".../app/config/config.yml"。(没有扩展能够加载"acme.twig.extension.loader"的配置(在.../app/config/config.yml中)。查找命名空间"acme.twig.extension.loader",找到"框架","安全性","twig","monolog","swiftmailer","assetic","doctrine","sensio_framework_extra","apy_data_grid","project","acme_demo","web_profiler","sensio_distribution")

(我已经想知道acme.twig.extension.loader中的acme外观,并将其替换为项目包的名称,但这又给了我同样的例外。只是切断它也是行不通的。

请帮忙!

Twig 不是 acme 捆绑包的一部分,Twig 是供应商捆绑包本身,因此错误是正确的。没有像acme.twig.extension.loader这样的命名空间

固定代码将是:

# services.yml
services:
    twig.extension.stringloader:
        class: Twig_Extension_StringLoader
        tags:
            - { name: twig.extension }

这可以添加到/app/config/config.yml以在每个捆绑包中使用,也可以将其添加到捆绑包/Resources/config/services.yml文件夹中,以仅在特定捆绑包中使用。

然后在树枝模板中将它们用作:

{{ include(template_from_string(page.template)) }}

以上在Symfony v2.5中对我有用