首页 文章

在Symfony中激活StringLoader Twig扩展

提问于
浏览
3

我正在尝试在Symfony 2.3项目中激活Twig StringLoader Extension但是无法正确使用yaml语法 .

这篇文章引用了一个帖子上的answer by 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“,”项目“,”acme_demo“,”web_profiler“,”sensio_distribution“ )

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

请帮忙!

1 回答

  • 6

    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 以仅在特定包中使用 .

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

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

    上面的内容适用于Symfony v2.5

相关问题