Symfony表单如何将类添加到表单组

Fra*_*rzi 5 forms symfony

使用方法:

->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


Fra*_*rzi 3

就我而言,我需要覆盖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)

正如所建议的,文档有助于理解原因。