4

我正在尝试在 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外观,并将其替换为项目包的名称,但这又给了我同样的异常。只是将其切断也不起作用。)

请帮忙!

4

1 回答 1

8

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 中对我有用

于 2014-08-21T10:09:05.583 回答