我有此代码:
{% for key, customField in customFields %}
{{ form_widget(formVirtualTerminal['cf_' ~ key], { 'attr': {'placeholder': customField['FieldDisplayName'], 'name': customField['FieldName'], 'class' : 'row no-gutters mb-3'} }) }}
{% endfor %}
遍历数组并为其输出一些字段。但是,由于我未知的原因,在所有这些字段中都生成了一个form-control
类,这破坏了页面的设计。
Here人们说这是默认Bootstrap主题的一部分,他们讨论如何在应用程序级别上停用此主题。但是,如果可能的话,我不希望进行这种根本性的改变。我想告诉Twig不要添加类。
以下是通过删除该类来解决此问题的技巧:
$("#custom-text-field-container .form-control").removeClass("form-control");
但是,我想避免编写Javascript从最初不应该具有该类的字段中删除类。
是否有一种方法告诉树枝不要将form-control
类写入这些文本字段?
form_widget
不接受任何参数来删除将在以后由主题应用的类或属性。基本上,它无法控制模板的功能,仅将模板传递给您所需的任何参数,并且取决于表单模板如何使用该信息。
例如对于HTML类,通常的方法只是将您传递的所有类与模板默认设置的任何类合并。
简单的求助方法是to create to your theme based on the form theme you are using(似乎是'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
块as the original相同,我只是删除了与可以通过的类合并的form-control
类。
通过在适当的模板中执行此操作,可以仅在想要此自定义主题的模板中使用此表单:
{% form_theme form 'form/your_theme.html.twig' %}
或者如果您想默认使用所有形式:
# config/packages/twig.yaml
twig:
form_themes: ['bootstrap_4_horizontal_layout.html.twig']
# ...