为什么twig文件中不存在函数`dump`?

Sid*_*Sid 6 symfony twig

我不知道为什么会出现这个错误

The function "dump" does not exist in twig file
Run Code Online (Sandbox Code Playgroud)

虽然我已经在config.yml文件中写了:

services:
product_store.twig.extension.debug:
    class: Twig_Extension_Debug
    tags:
         - { name: 'twig.extension' }
Run Code Online (Sandbox Code Playgroud)

在twig文件中我尝试转储:

{{ dump(product) }}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ary 15

lifo的答案鼓励您使用debug标签,但debug标签{% debug product %}在Twig 1.5中已弃用,并替换为该dump功能{{ dump(product) }}.

从Symfony Standard Edition 2.0.9开始的正确扩展是Twig_Extension_Debug应该添加的,app/config/config_dev.yml所以它只在dev环境中加载:

services:
    twig.extension.debug:
        class: Twig_Extension_Debug
        tags: [{ name: 'twig.extension' }]
Run Code Online (Sandbox Code Playgroud)

然后,您应该可以{{ dump(product) }}在模板中使用.

如果问题仍然存在,您可以尝试以下几点:

  1. 使用php app/console container:debug twig.extension.debug --env=dev保证了依赖注入容器被正确拿起你的服务定义.

    [container] Information for service twig.extension.debug
    
    Service Id       twig.extension.debug
    Class            Twig_Extension_Debug
    Tags
        - twig.extension                 ()
    Scope            container
    Public           yes
    Synthetic        no
    Required File    -
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开dev环境的已编译依赖项注入容器类,并搜索Twig_Extension_Debug是否已定义任何其他服务以使用它.这个文件住在app/cache/dev/appDevDebugProjectContainer.php

  3. 确保参数%kernel.debug%为true.

  4. 确保您使用的是Twig 1.5或更高版本.