我正在尝试根据我是在编辑用户还是创建用户来控制密码字段的呈现。我正在使用一个简单的会话布尔变量,如下所示:
{{ form_start(userForm) }}
{{ form_errors(userForm) }}
<div id="user-fg-email" class="form-group">
{{ form_label(userForm.email) }}
{{ form_errors(userForm.email) }}
{{ form_widget(userForm.email) }}
</div>
{% if app.session.get('editingUser') == false %}
<div id="user-fg-pp1" class="form-group">
{{ form_label(userForm.plainPassword.first) }}
{{ form_widget(userForm.plainPassword.first) }}
</div>
<div id="user-fg-pp2" class="form-group">
{{ form_label(userForm.plainPassword.second) }}
{{ form_errors(userForm.plainPassword.first) }}
{{ form_widget(userForm.plainPassword.second) }}
</div>
{% endif %}
<div id="user-fg-role" class="form-group">
{{ form_label(userForm.role) }}
{{ form_errors(userForm.role) }}
{{ form_widget(userForm.role) }}
</div>
<button type="submit" class="btn btn-primary pull-right">Submit</button>
{{ form_end(userForm) }}
然而,当这个布尔值被评估为true时,它应该阻止这些字段的渲染,它们仍然被后面的form_end标记假设地呈现。
有没有办法防止这种情况发生?
编辑:
如果editingUser == true,密码字段实际上是在按钮之后呈现的,因此我假设它是由form_end标签完成的。
答案 0 :(得分:0)
因为您必须指定Twig才能显示未在表单中显式呈现的所有其他字段:http://symfony.com/doc/current/reference/forms/twig_reference.html#form-end-view-variables
{{ form_end(form, {'render_rest': false}) }}