我不知道为什么会出现此错误
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) }}
答案 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
。
如果问题仍然存在,您可以尝试以下几点:
使用services:
twig.extension.debug:
class: Twig_Extension_Debug
tags: [{ name: 'twig.extension' }]
确保依赖项注入容器正确地提取服务定义。
{{ dump(product) }}
打开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 -
确保参数Twig_Extension_Debug
为真。
确保您使用的是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();
就是这样。无需注册任何服务。