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

时间:2013-10-16 00:10:51

标签: php forms symfony formbuilder

我正在尝试使用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',
             )
        ));
    }
}

但那不起作用。所以对此的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

2.7 以来choice可能。看看here。使用choice_attr

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:-1)

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

->add('birthdate', 'date',array(
      'input' => 'datetime',
      'widget' => 'single_text',
      'attr' => array('class'=>'calendar')
 ))