Я пытаюсь контролировать рендеринг полей пароля в зависимости от того, редактирую ли я пользователя или создаю его. Я делаю это с простой логической переменной сеанса следующим образом:
{{ 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) }}
Однако, когда этот логический объект оценивается как истинный, который должен предотвращать визуализацию этих полей, они все равно визуализируются с помощью следующего тега form_end.
Есть ли способ предотвратить это?
редактировать:
если editUser == true, поля пароля фактически отображаются после кнопки, поэтому мое предположение сделало это тегом form_end.
Поскольку вы должны указать Twig, чтобы не отображать все остальные поля, которые явно не отображаются в форме: http://symfony.com/doc/current/reference/forms/twig_reference.html#form-end-view- переменные
{{ form_end(form, {'render_rest': false}) }}
{else}
или{elseif}
перед{endif}
? как объяснено здесь: twig.sensiolabs.org/doc/tags/if.html