7

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

但这不起作用。因此,对此的任何帮助将不胜感激。

4

3 回答 3

6

choice2.7开始就有可能。看这里。与choice_attr.

于 2015-09-15T07:11:39.863 回答
0

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

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

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

于 2015-02-06T10:20:32.810 回答
-1

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

->add('birthdate', 'date',array(
      'input' => 'datetime',
      'widget' => 'single_text',
      'attr' => array('class'=>'calendar')
 ))
于 2014-08-09T14:26:17.183 回答