У меня возникли проблемы с переопределением поля флажка в моей форме Symfony внутри моего шаблона Twig.
Я создаю поле со следующим кодом в моем шаблоне Twig:
{{ form_row(form.legal, {
'label' : 'personal.form.fields.legal'|trans,
}) }}
В том же шаблоне у меня есть следующий блок, в котором я пытаюсь настроить метку. Обратите внимание, что приведенный выше перевод включает HTML, поэтому мне нужен фильтр raw.
{% block _crmpiccobundle_details_legal_label %}
{% apply spaceless %}
<label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}>
{{ label|unescape|raw }}
</label>
{% endapply %}
{%- endblock %}
К сожалению, это не работает, и у меня странным образом остается нет флажка и дублирующийся ярлык, и я не могу понять, почему.
@Vyctorya Спасибо за комментарий, но это не подействовало. Кроме того, я не уверен, что это правильный синтаксис.




Похоже, вы используете тему формы на основе начальной загрузки (например, bootstrap_4_layout.html.twig или bootstrap_3_layout.html.twig)
Попробуйте сделать так:
{% block _crmpiccobundle_details_legal_label %}
{%- if widget is defined -%}
{{ widget|raw }}
{% apply spaceless %}
<label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}>
{{ label|unescape|raw }}
</label>
{% endapply %}
{%- endif -%}
{%- endblock %}
В макете начальной загрузки часть виджета должна быть обернута в метку, поэтому тема вызывает один и тот же блок дважды, сначала для части _label и второй раз для _widget. Для второго вызова тема предоставляет переменную widget, которую вы должны визуализировать самостоятельно (иначе вы бы не увидели свой флажок). Кроме того, вы должны подавить отображение метки дважды, что можно сделать, просто проверив, определен ли виджет.
Посмотрите, как исходный блок также проверяет, позволяет ли widget is defined избежать рендеринга двойной метки:
Я думаю, вам нужно добавить {{- widget | raw}} перед {{label | unescape | raw}}