Symfony Forms помогает вам создавать и обрабатывать HTML—формы, абстрагируя все сложные и повторяющиеся вещи. Он также предоставляет множество утилит для визуализации содержимого формы, от инструкции render-all {{form (form)}}
до отдельных помощников формы:
{{ form_start(form) }}
<div class="my-custom-class-for-errors">
{{ form_errors(form) }}
</div>
<div class="form-control">
<i class="fa fa-calendar"></i> {{ form_label(form.dueDate) }}
{{ form_widget(form.dueDate) }}
<small>{{ form_help(form.dueDate) }}</small>
<div class="form-error">
{{ form_errors(form.dueDate) }}
</div>
</div>
{{ form_end(form) }}
Помощники form_*()
отображают каждую часть поля формы, включая все необходимые элементы HTML. Большинству разработчиков нравится такое поведение, но некоторые дизайнеры борются с этим, потому что он скрывает весь HTML в темах форм, которыми им нелегко управлять.
Вот почему Symfony 5.2 представляет новые помощники формы Twig для рендеринга значения каждой части поля формы без добавления вокруг нее какого-либо HTML:
field_name
field_value
field_label
field_help
field_errors
field_choices
(итератор выбора полей; например, для <select>)
При использовании этих помощников вы должны написать все содержимое HTML для всех полей формы, которые некоторые люди предпочитают лучше контролировать сгенерированный HTML без необходимости иметь дело с темами формы:
<input
name="{{ field_name(form.username) }}"
value="{{ field_value(form.username) }}"
placeholder="{{ field_label(form.username) }}"
class="form-control"
/>
<select name="{{ field_name(form.country) }}" class="form-control">
<option value="">{{ field_label(form.country) }}</option>
{% for label, value in field_choices(form.country) %}
<option value="{{ value }}">{{ label }}</option>
{% endfor %}
</select>