如果在控制器上的渲染调用中定义了表单,我试图在树枝模板上渲染表单。类似的东西:
{% if form_to_be_rendered is defined %}
{{ form(form_to_be_rendered) }}
{% endif }
如果控制器的渲染调用包含var form_to_be_rendered
,则一切运行良好,并呈现表单。但是,如果我尝试在没有此参数的情况下渲染模板,则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 %}
导致问题。请查看以下解决方案。
谢谢,
答案 0 :(得分:2)
解决。
这很奇怪,我的错,因为我没有在OP上发布完整的代码。
{% if form is defined %}
{% block content%}
{{ form(form)}}
{% end block %}
{% endif %}
条件块在{% block content %}
内部,即使条件被评估为假,Twig也会尝试渲染。如果我用内容块包围条件块,问题就解决了。
{% block content%}
{% if form is defined %}
{{ form(form)}}
{% endif %}
{% end block %}
由于
答案 1 :(得分:0)
你有没有尝试过:
{% if form_to_be_renderer|length %}
{{ form(form_to_be_renderer) }}
{% endif %}
答案 2 :(得分:0)
Twig文档说:
定义:
定义检查是否在当前上下文中定义了变量。
空:
如果foo变量为null,false,空数组或空字符串,则计算结果为true。
空:
如果变量为null,则null返回true。
所以弄清楚,你想要检查什么,取决于“form_to_be_rendered”的值。