使用方法:
->add('name', TextType::class, [
'label' => 'Name',
'required' => true,
'attr' => [
'class' => 'myclass'
],
])
Run Code Online (Sandbox Code Playgroud)
我将类“ myclass”添加到<input>元素中,得到:
<div class="form-group">
<label ...>Name</label>
<input type="text" required="required" class="myclass" ...>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我不想将“ myclass”类添加到输入本身,而是添加到其<div class="form-group">容器,该怎么办呢?
<div class="form-group myclass">
<label ...>Name</label>
<input type="text" required="required" ...>
</div>
Run Code Online (Sandbox Code Playgroud)
做到这一点的最佳方法是什么?
小智 7
我实际上在 PHP (Symfony 4.4.2) 中找到了一种方法。类必须进入“row_attr”而不是“attr”。对于给定的示例,它将是:
->add('name', TextType::class, [
'label' => 'Name',
'required' => true,
'row_attr' => [
'class' => 'myclass'
],
])
Run Code Online (Sandbox Code Playgroud)
相关文档:https : //symfony.com/doc/current/reference/forms/types/text.html#row-attr
就我而言,我需要覆盖form_row块:
{% block form_row -%}
<div class="form-group myclass{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
{{- form_label(form) -}}
{{- form_widget(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock form_row %}
Run Code Online (Sandbox Code Playgroud)
正如所建议的,文档有助于理解原因。