9

我简单地为模板(index.html.twig)添加:

{{ dump(product) }}

我有错误:

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

为什么此功能未启用,我该如何启用?

4

3 回答 3

15

您需要配置调试扩展:

# 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+ 中工作,并且不需要自定义服务定义。有关更多详细信息,请参阅此答案

于 2012-04-12T08:53:02.580 回答
2

Symfony 2.7+ 更新:

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

检查VarDumper 组件及其在 Twig 上的集成

旧答案:

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

版本改进dump

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

这里的链接:

于 2013-07-08T13:36:05.330 回答
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 %}

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

树枝转储栏

于 2016-03-05T17:41:45.447 回答