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

时间:2012-08-28 12:36:55

标签: symfony twig

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

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' }

在twig文件中我尝试转储:

{{ dump(product) }}

4 个答案:

答案 0 :(得分:15)

lifo的答案鼓励您使用debug标记,但{1}}标记debug在Twig 1.5中已弃用,并替换为dump函数{{1 }}

从Symfony Standard Edition 2.0.9启用的正确扩展名为{% debug product %},应添加到{{ dump(product) }},以便仅在开发环境中加载:

Twig_Extension_Debug

然后,您应该可以在模板中使用app/config/config_dev.yml

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

  1. 使用services: twig.extension.debug: class: Twig_Extension_Debug tags: [{ name: 'twig.extension' }] 确保依赖项注入容器正确地提取服务定义。

    {{ dump(product) }}
  2. 打开dev环境的已编译依赖注入容器类,并搜索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 -

  3. 确保参数Twig_Extension_Debug为真。

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

答案 1 :(得分:1)

首先,“dump”实际上不是命令,它的“调试”。其次,你的配置语法有点搞砸了。看起来应该是这样的:

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

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

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

答案 3 :(得分:0)

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

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

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