Symfony 为每个ChoiceType选项的标签提供自定义属性

Symfony 为每个ChoiceType选项的标签提供自定义属性,symfony,symfony-forms,symfony-2.8,Symfony,Symfony Forms,Symfony 2.8,在Symfony2中,使用带有ChoiceType字段的表单将呈现如下内容: <span> <input type="radio"><label>Option 1</label></span> <span> <span> <input type="radio"><label>Option 2</label></span> <span> <s

在Symfony2中,使用带有ChoiceType字段的表单将呈现如下内容:

<span>
  <input type="radio"><label>Option 1</label></span>
<span>
<span>
  <input type="radio"><label>Option 2</label></span>
<span>
<span>
  <input type="radio"><label>Option 3</label></span>
<span>
<span>
  <input type="radio"><label attr="custom">Option 1</label></span>
<span>
<span>
  <input type="radio"><label attr="custom">Option 2</label></span>
<span>
<span>
  <input type="radio"><label attr="custom">Option 3</label></span>
<span>
这在Symfony2中是否可行?

使用label\u attr函数应该可以准确地提供您所需要的内容。例如,您的表单类型:

class YourFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('someRadio', 'choice', [
                'label_attr' => ['class' => 'extra_class']
                // ... other things here
            ])
        ;
    }
}

这将仅将属性应用于总体标签,而不应用于单选按钮旁边的标签。在我的例子中,我有一个标题为“支付”的部分和不同的选项:Visa卡、万事达卡。。。label_attr只会影响支付标签,但我想更改Visa、mastercard标签的属性。您尝试过吗?我只是尝试了一下,标签按照你想要的方式应用在每个单选按钮上,而不是整个标签上。