Вы не можете предотвратить это, не внося изменения в тему
Вы не можете "запретить ветке не добавлять классы".
form_widget
не принимает никаких параметров дляудалить класс или атрибут, который будет позже применен темой.
По сути, он не имеет никакого контроля над тем, что делает шаблон, он только передает шаблону любые параметры, которые вы хотите, и это зависит от шаблона формы. чтобы использовать эту информацию.
Например, для классов HTML обычный подход состоит в том, чтобы просто объединить любые классы, которые вы передаете, с классами, установленными в шаблоне по умолчанию.
Обходной путь при сохранении большинстватемы формы, которую вы используете
Простым способом будет для создания вашей темы на основе темы формы, которую вы используете (которая выглядит как ' bootstrap_4_layout.html). twig ')
Вам нужно будет переписать только те части, которые вам мешают, оставив все остальное как есть.
Например, «полная» новая тема может быть такой короткой, как:
{# templates/form/your_theme.html.twig #}
{% use 'bootstrap_4_layout.html.twig' %}
{% block form_widget_simple -%}
{% if type is not defined or type != 'hidden' %}
{%- set attr = attr|merge({class: (attr.class|default('') ~ (type|default('') == 'file' ? ' custom-file-input' : ''))|trim}) -%}
{% endif %}
{%- if type is defined and (type == 'range' or type == 'color') %}
{# Attribute "required" is not supported #}
{%- set required = false -%}
{% endif %}
{{- parent() -}}
{%- endblock form_widget_simple %}
Это почти тот же form_widget_simple
блок , что и исходный , я просто удалил класс form-control
, который объединен с классами, через которые вы можете пройти.
Вы можете использовать эту форму только в шаблонах, для которых вы хотите эту пользовательскую тему, выполнив это в соответствующем шаблоне:
{% form_theme form 'form/your_theme.html.twig' %}
Или если вы хотите использовать ее по умолчанию во всех формах в вашем приложении:
# config/packages/twig.yaml
twig:
form_themes: ['form/your_theme.html.twig']
# ...