在Symfony中激活StringLoader Twig扩展

4
我正在尝试在Symfony 2.3项目中激活Twig StringLoader Extension,但是无法正确使用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”,找到了“framework”、“security”、“twig”、“monolog”、“swiftmailer”、“assetic”、“doctrine”、“sensio_framework_extra”、“apy_data_grid”、“project”、“acme_demo”、“web_profiler”、“sensio_distribution”)

(我已经对acme.twig.extension.loader中的acme外观产生疑问,并用项目包的名称替换它,但仍然会引发相同的异常。裁剪它也不起作用。)

请帮忙!

1个回答

8

Twig不是acme bundle的一部分,Twig本身是供应商bundle,因此错误是正确的。没有名为acme.twig.extension.loader的命名空间。

修复后的代码如下:

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

可以将以下内容添加到/app/config/config.yml中,以便在每个bundle中使用;或者将其添加到/Resources/config/services.yml中的bundle文件夹中,以仅在某些bundle中使用。

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

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

在Symfony v2.5中,以上内容对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接