如何在symfony 2表单生成器中向选项元素添加自定义属性


How to add custom attributes to option elements in symfony 2 form builder

我正在尝试使用symfony2表单构建器将自定义属性添加到选项元素中,我不确定这是否可能。如果没有,我需要知道如何添加功能。

以以下形式为例:

class FooForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('user','choice',array(
            'choices' => array(
                 'designers'=>'designers',
                 '1'=>'mike',
                 '2'=>'carroll',
                 'developers'=>'developers',
                 '3'=>'chase',
                 '4'=>'brett',
                 '5'=>'jordan',
             )
        ));
    }
}

然后当渲染时,我需要它看起来像:

<select>
    <option value="" disabled="disabled">designers</option>
    <option value="1">mike</option>
    <option value="2">carroll</option>
    <option value="" disabled="disabled">developers</option>
    <option value="3">chase</option>
    <option value="4">brett</option>
    <option value="5">jordan</option>
</select>

我所期望的是这样的:

class FooForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('user','choice',array(
            'choices' => array(
                 'designers'=>array(
                      'label'=>'designers',
                      'attr'=>arrry('disabled'=>'disabled')
                 ),
                 '1'=>'mike',
                 '2'=>'carroll',
                 'developers'=>array(
                      'label'=>'developers',
                      'attr'=>arrry('disabled'=>'disabled')
                 ),
                 '3'=>'chase',
                 '4'=>'brett',
                 '5'=>'jordan',
             )
        ));
    }
}

但这行不通。因此,对此的任何帮助将不胜感激。

2.7 以来,choice 是可能的。看这里。随着choice_attr.

您可能需要创建自己的小部件,从"选择"小部件扩展而来。

因此,您将能够在选项上使用自定义渲染,并且您将能够在每个选项的属性中设置所需的任何内容。

注意:我看起来是一样的,但使用了简单的"选择",并且在模板中我添加了带有额外选项的 JS var(带有"选择"中的值的数组,并指定了额外的属性)。我根据页面加载事件上选项的值应用每个额外的属性。

请使用下面的代码在 symfony2 中设置属性

->add('birthdate', 'date',array(
      'input' => 'datetime',
      'widget' => 'single_text',
      'attr' => array('class'=>'calendar')
 ))
相关文章: