【问题标题】:How to use dump in TWIG?如何在 TWIG 中使用转储?
【发布时间】:2012-04-12 08:47:46
【问题描述】:

我只是为模板(index.html.twig)添加:

{{ dump(product) }}

我有错误:

The function "dump" does not exist in AcmeStoreBundle:Default:index.html.twig at line 2 

为什么这个功能没有开启,如何开启?

【问题讨论】:

标签: php symfony twig


【解决方案1】:

你需要to configure调试扩展:

# app/config/config.yml
services:
    acme_hello.twig.extension.debug:
        class:        Twig_Extension_Debug
        tags:
             - { name: 'twig.extension' }

根据上面提到的链接,Twig 调试默认设置为在运行 Twig 1.16+ 的 Symfony 2.5+ 中工作,并且不需要自定义服务定义。 See this answer for more details.

【讨论】:

  • 我不知道这些是旧答案还是不完整,但这绝对不适合我。我尝试了这个答案的许多不同版本,但无济于事。
  • @ChadwickMeyer 有一个链接说你只需要在配置中启用它twig: debug: true
  • 谢谢。我已经这样做了,但没有用。但我也从 Symfony 2.4 升级到 2.5 并运行 composer update(从 Twig 1.15 升级到 1.16,现在它正在工作。所以谁知道......
  • 为了记录,我删除了您在此答案中提到的自定义配置,因为您引用的链接显示默认情况下在开发环境中启用了 Twig 调试。
  • @ChadwickMeyer 不知道您的编辑为何被拒绝。添加了您的链接并支持您的答案。谢谢。
【解决方案2】:

当你像@meze 说的那样配置它时,你可以显示所有自定义变量:

<h1>Variables passed to the view:</h1>
{% for key, value in _context %}
    {% if key starts with '_' %}
    {% else %}
        <pre style="background: #eee">{{ key }}</pre>
        {{ dump(value) }}
    {% endif %}
{% endfor %}

您可以使用我的简单插件来方便地检查您的变量:

Twig Dump Bar

【讨论】:

    【解决方案3】:

    Symfony 2.7+ 更新:

    DebugBundle 允许将组件更好地集成到 Symfony 全栈框架中。它在 Symfony 标准版的开发和测试环境中默认启用。

    检查VarDumper component 及其integration on Twig

    老答案:

    我想建议一个非本地解决方案。您需要第三方捆绑包,但最终结果会很棒!

    dump 版本的改进:

    1. 所有转储都有样式
    2. 您可以提供最大嵌套级别以避免大型对象的内存问题
    3. 非常有用的助手,例如 ldd(),这是经典“转储死”的别名
    4. 它有一个控制台转储程序(例如php app/console ladybug:dump "Symfony\Component\HttpFoundation\Request"
    5. 它提供了与 Symfony Profiler 的集成
    6. 它会自动检测 Symfony、Doctrine、Twig 和 Silex 类,并将它们链接到官方文档

    这里是链接:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多