【问题标题】:Symfony2 Twig: how to use config.yml variables inside template without setting twig globals?Symfony2 Twig:如何在模板中使用 config.yml 变量而不设置 twig 全局变量?
【发布时间】:2012-05-11 08:05:57
【问题描述】:

我如何从我的 config.yml 文件中获取价值但未设置为 Twig 全局。例如:

mopa_boostrap:
    initializr:
        meta: ~

当我尝试时

{{ mopa_bootstrap.initializr.meta }}

我收到错误,该模板中没有设置此类变量。

更新 由于没有 Twig Globals 是不可能的,所以我完成了 Twig 扩展,它将 config.yml 中的选定变量映射到 Twig Globals 并使其可从模板中使用。

完整的实现请看这里:https://github.com/nysander/MopaBootstrapBundle/commit/d36269184cfad6d8fd465d8b622f92a302dea104

【问题讨论】:

    标签: variables symfony global-variables twig


    【解决方案1】:

    解决方案可能是创建一个带有输出您想要的功能的树枝扩展。 Twig 扩展将被注册为服务,你可以将任何你想要的东西传递给它。

    【讨论】:

    • 我设法做了 Twig 扩展。感谢 Kuba 和 Anton 的提示。
    • 随时与社区分享并在此处发布指向它的链接。 :)
    • 这个实现的大部分内容都在这个提交中:github.com/nysander/MopaBootstrapBundle/commit/… 还要查看整个 Configuration.php 文件和 base_initializr.html.twig 模板的用例。
    【解决方案2】:

    没有办法做到这一点。您必须设置全局变量才能在 twig 中使用它们。

    【讨论】:

    • 即使有一些 TwigExtension?
    • 如果你编写 twig 扩展,它将 config.yml 中的一些参数映射到全局变量中,那么它可能会起作用,但据我所知,这不是一个好主意,主要是因为 config 可能包含安全数据(db密码等),它不应该在模板中公开它。
    • 我的意思是做一个扩展,它只映射我想要树枝全局变量而不是整个配置的变量。
    • 是的,这是可能的。例如,您可以将服务容器传递到 twig 扩展服务并初始化您需要的变量。
    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多