如何在TWIG中使用dump?

时间:2012-04-12 08:47:46

标签: php symfony twig

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

{{ dump(product) }}

我有错误:

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

为什么不启用此功能,以及如何启用此功能?

3 个答案:

答案 0 :(得分:15)

您需要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

答案 1 :(得分:2)

Symfony 2.7+更新:

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

检查VarDumper component及其integration on Twig

OLD ANSWER:

我想建议一个非原生的解决方案。你需要一个第三方软件包,但最终结果会很棒!

dump版本的改进:

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

答案 2 :(得分: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