6

我不知道为什么它显示此错误

The function "dump" does not exist in twig file

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

services:
product_store.twig.extension.debug:
    class: Twig_Extension_Debug
    tags:
         - { name: 'twig.extension' }

在树枝文件中,我尝试转储:

{{ dump(product) }}
4

4 回答 4

15

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

从 Symfony 标准版 2.0.9 开始启用的正确扩展是Twig_Extension_Debug并且应该被添加到,app/config/config_dev.yml因此它只在开发环境中加载:

services:
    twig.extension.debug:
        class: Twig_Extension_Debug
        tags: [{ name: 'twig.extension' }]

然后,您应该能够{{ 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    -
    
  2. 打开为您的开发环境编译的依赖注入容器类并搜索Twig_Extension_Debug以查看是否已定义任何其他服务来使用它。该文件位于app/cache/dev/appDevDebugProjectContainer.php

  3. 确保参数%kernel.debug%为真。

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

于 2013-05-25T18:08:54.500 回答
1

首先,“转储”实际上不是命令,而是“调试”。其次,您的配置语法有点混乱。它应该看起来像这样:

services:
    twig.extension.debug:
        class: Twig_Extensions_Extension_Debug
        tags:
            - { name: twig.extension }

然后你可以像这样在你的模板中使用它:{% debug var %}--注意 {%%} 大括号。调试在 {{}} 大括号内不起作用,因为它是一个 TAG 而不是 FUNCTION。

于 2012-11-27T13:44:59.267 回答
0

可能是这个原因:

你把

services:
  product_store.twig.extension.debug:
  class:        Twig_Extension_Debug
  tags:
     - { name: 'twig.extension' }

它应该在您的边界的 config.yml 中:

nameOfTheBoundle/Resources/config/config.yml

而不是在项目的 config.yml 中:

app/config/config.yml
于 2012-11-06T15:44:07.627 回答
0

接受的答案对我不起作用。我所要做的就是在 AppKernel 中启用 DebugBundle(仅在开发/测试环境中):

$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();

就是这样。无需注册任何服务。

于 2016-01-21T12:09:40.730 回答