问题描述
我在 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 呈现复选框的方式更改为我需要的方式?
解决方法
如果你想得到这个结果:
<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) }}