Я конвертирую приложение Symfony 2.8 в Symfony 4.4. Я обновил библиотеки, компоненты, контроллеры, формы и т. Д. c, так что теперь я не устарел, но обнаружил странную проблему: почти все формы, которые мы используем в этом приложении, отображаются с использованием bootstrap_3_horizontal_layout
тема, без проблем. Но в нескольких формах, которые мы используем, чтобы получить больше контроля над отображаемым интерфейсом, тема form_div_layout
. Проблема в том, что когда мы используем эту тему, метка, текст рядом с флажками, не отображается. Если мы просто отключим порядок {% form_theme form 'form_div_layout.html.twig' %}
, метки будут отображаться правильно.
Вот код, который мы используем для отображения флажков:
<div class='row'>
<div class='col-md-3'>
{{ form_label(form.user.roles) }}
</div>
<div class='col-md-9'>
{{ form_errors(form.user.roles) }}
{% for child in form.user.roles %}
{{- form_widget(child) -}}
{{- form_label(child) -}}
<br />
{% endfor %}
</div>
</div>
И это небольшой фрагмент кода сгенерированный код:
<input type="checkbox" id="form_user_roles_0" name="form[user][roles][]" value="ROLE_INTRANET" checked="checked" /><br />
<input type="checkbox" id="form_user_roles_1" name="form[user][roles][]" value="ROLE_EXTRANET" checked="checked" /><br />
<input type="checkbox" id="form_user_roles_2" name="form[user][roles][]" value="ROLE_INTRANET_ADMIN" /><br />
И это тот же фрагмент, но с отключенной опцией form_theme
(поэтому, используя bootstrap_3_horizontal_layout
:
<div class="checkbox"><label for="form_user_roles_0"><input type="checkbox" id="form_user_roles_0" name="form[user][roles][]" value="ROLE_INTRANET" checked="checked" /> Access to the intranet</label></div><br />
<div class="checkbox"><label for="form_user_roles_1"><input type="checkbox" id="form_user_roles_1" name="form[user][roles][]" value="ROLE_EXTRANET" checked="checked" /> Access to the extranet</label></div><br />
<div class="checkbox"><label for="form_user_roles_2"><input type="checkbox" id="form_user_roles_2" name="form[user][roles][]" value="ROLE_INTRANET_ADMIN" /> Intranet Administrator</label></div><br />
Что мы делаем неправильно? Как можно ли печатать / показывать / отображать этикетки, используя form_div_layout
?