在Symfony中激活StringLoader Twig扩展

use*_*170 4 php symfony twig symfony-2.3

我正在尝试在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' }
Run Code Online (Sandbox Code Playgroud)

给我这个:

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"," 项目 ","acme_demo","web_profiler","sensio_distribution" )

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

请帮忙!

sha*_*nSK 8

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

固定代码是:

# services.yml
services:
    twig.extension.stringloader:
        class: Twig_Extension_StringLoader
        tags:
            - { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)

这可以添加到/app/config/config.yml每个包中使用或将其添加到您的包文件夹中/Resources/config/services.yml以仅在特定包中使用.

然后在twig模板中使用它们:

{{ include(template_from_string(page.template)) }}
Run Code Online (Sandbox Code Playgroud)

以上在Symfony v2.5中适用于我