【发布时间】:2016-01-15 08:20:52
【问题描述】:
如果它在控制器的渲染调用中定义,我正在尝试在树枝模板上渲染表单。比如:
{% if form_to_be_rendered is defined %}
{{ form(form_to_be_rendered) }}
{% endif }
如果控制器的渲染调用包含form_to_be_rendered 的var,则一切运行良好,并且表单被渲染。但是如果我尝试在没有这个参数的情况下渲染模板,Twig 会抛出一个 RuntimeError 指示 form_to_be_rendered 变量未定义。
Variable "form_to_be_rendered" does not exist in BundleName:Path/to/template:template.html.twig at line 3
500 Internal Server Error - Twig_Error_Runtime
我尝试将它作为空值传递并is not null 检查条件,但它也失败了。
我把这个转储放在模板上:
{% dump reset_password_form is defined %}
当我没有将任何参数传递给渲染函数时,它被评估为false。
编辑
我忘记发布导致问题的条件块内有一个{% block content %}。请查看下面的解决方案。
谢谢,
【问题讨论】:
-
只是为了排除明显的事情,这是您使用该变量的唯一地方,对吗?所以我们可以确定它不会在没有
if <var> is defined保护的情况下在其他地方使用 -
是的。我的意思是 var 当然只在条件块内使用
-
代码的第二行(调用
form函数)应该使用表达式分隔符({{ }})而不是标签分隔符({% %})虽然我希望Twig_Error_Syntax而不是@ 987654335@ 如果这是主要问题 -
你是对的。复制代码时是我的错。在 OP 上编辑
-
第三行是哪一行?带有
if或form()的那个?