Symfony buildForm:将复选框输入放在标签标签内

时间:2021-07-19 12:04:01

标签: symfony symfony-forms formbuilder symfony5

我在 symfony 5.3 中有一个用 buildForm 制作的表单

表单域之一是复选框,即“活动”复选框。这是代码:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        // some other fields
        ->add('active')
    ;
}

formBuilder 正在打印这样的复选框:

<div>
    <label for="extract_ac_configuration_active">Active</label>
    <input type="checkbox" id="extract_ac_configuration_active" name="extract_ac_configuration[active]" value="1">
</div>

但是因为我希望标签无需 javascript 即可点击,并且因为我使用的是 css 框架,所以我需要将其呈现为

<label>
    <input type="checkbox" id="extract_ac_configuration_active" name="extract_ac_configuration">
    <span>active</span>
</label>

如何将通过 buildForm 呈现复选框的方式更改为我需要的方式?

1 个答案:

答案 0 :(得分:1)

如果你想得到这个结果:

<label>
    <input type="checkbox" id="extract_ac_configuration_active" name="extract_ac_configuration">
    <span>active</span>
</label>

您必须分解表单渲染。而不是像这样全局渲染:

{{ form_widget(form) }}

你必须这样做:

{{ form_start(form) }}

<label>
    {{ form_widget(form.active) }}
    <span>active</span>
</label>

{{ form_end(form) }}