symfony2自定义表单选择选项

Dar*_*ari 14 php symfony-forms symfony

我正在尝试使用简单的表单添加名称和颜色的活动.

所以我想制作一个带有一些颜色数组的列表,现在它正在工作我有颜色的名称.
我可以在select标签中添加任何属性:

$form = $this->createFormBuilder($myclass)
->add('Colors','choice',array('label'=>'select some colors',
            'multiple'=>true,
            'choices'=>array(1=>'red', 2=>'blue', 3=>'green'),
            'attr'=>array('style'=>'width:300px', 'customattr'=>'customdata')
            ));
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

<select name="select" style="width: 300px;" multiple="multiple" customattr="customdata">
   <option value="1">red</option>
   <option value="2">blue</option>
   <option value="3">green</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

但是,如何添加selected="selected"我想要的任何属性以及我的选择选项?像这样:

<select name="select" style="width: 300px;" multiple="multiple" customattr="customdata">
   <option style="background-color: #F00;" value="1" selected="selected">red</option>
   <option style="background-color: #00F;" value="2" selected="selected">blue</option>
   <option style="background-color: #0F0;" value="3">green</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何通过symfony FormBuilder optionselect标签添加自定义attr (而不是标签).
注意:我不想使用JavaScript.我想使用symfony2 FormBuilder来自定义我的选择选项.

Ber*_*sek 10

通常,字段的默认数据由存储在对象中的值确定.例如,如果

class MyClass
{
    private $Colors = array(1, 2);
}
Run Code Online (Sandbox Code Playgroud)

然后,条目"1"和"2"(标签为"红色"和"绿色")将默认显示为选中状态.您还可以在将该值传递给表单之前将其存储在对象中:

$myObject->Colors = array(1, 2);

$form = $this->createFormBuilder($myObject)
    ...
Run Code Online (Sandbox Code Playgroud)

最后一种可能是通过传递"data"选项来覆盖存储在对象中的默认值:

$builder->add('Colors', 'choice', array(
    'label' => 'select some colors',
    'multiple' => true,
    'choices' => array(1 => 'red', 2 => 'blue', 3 => 'green'),
    'attr' => array('style' => 'width:300px', 'customattr' => 'customdata'),
    'data' => array(1, 2),
));
Run Code Online (Sandbox Code Playgroud)