[英]Symfony2 twig throws render error on conditionally added form fields
[英]Symfony2/Twig: Error on conditionally render
我正在尝试在树枝模板上呈现表单,如果该表单在控制器上的render调用中定义的话。 就像是:
{% if form_to_be_rendered is defined %}
{{ form(form_to_be_rendered) }}
{% endif }
如果控制器的render调用包含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 %}
当我不将任何参数传递给render函数时,它将被评估为false
。
编辑
我忘记发布条件块内有一个{% block content %}
的问题。 请查看下面的解决方案。
谢谢,
解决了。
这很奇怪,也是我的错,因为我没有在OP上发布完整的代码。
{% if form is defined %}
{% block content%}
{{ form(form)}}
{% end block %}
{% endif %}
条件块内部有{% block content %}
,即使条件被评估为false,Twig也会尝试渲染该{% block content %}
。 如果我将条件块与内容块一起包围,则此问题已解决。
{% block content%}
{% if form is defined %}
{{ form(form)}}
{% endif %}
{% end block %}
谢谢
你试过了吗:
{% if form_to_be_renderer|length %}
{{ form(form_to_be_renderer) }}
{% endif %}
Twig文档说:
定义:
define检查在当前上下文中是否定义了变量。
空:
如果foo变量为null,false,空数组或空字符串,则计算结果为true。
空值:
如果变量为null,则null返回true。
因此,根据“ form_to_be_rendered”的值可以确定要检查的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.