Symfony:在multiselect选项标签中添加id


Symfony: add IDs to option tags in multiselect

版本:Symfony 3

在我的表单中有一个多重选择,如下所示

->add('roles', ChoiceType::class, array(
    'attr'  =>  array('class' => 'form-control',
    'style' => 'margin:5px 0;'),
    'choices' => 
    array
    (
        'ROLE_ADMIN' => array
        (
            $this->get('translator')->trans('Yes') => 'ROLE_ADMIN',
        ),
        'ROLE_TEACHER' => array
        (
            $this->get('translator')->trans('Yes') => 'ROLE_TEACHER'
        ),
        'ROLE_STUDENT' => array
        (
            $this->get('translator')->trans('Yes') => 'ROLE_STUDENT'
        ),
        'ROLE_PARENT' => array
        (
            $this->get('translator')->trans('Yes') => 'ROLE_PARENT'
        ),
    ) 
    ,
    'multiple' => true,
    'required' => true,
    ) )

,它在前端/网页中如下所示,

<select multiple="multiple" style="margin:5px 0;" class="form-control" required="required" name="form[roles][]" id="form_roles">
<optgroup label="ROLE_ADMIN">
    <option value="ROLE_ADMIN">Yes</option>
</optgroup>
<optgroup label="attr">
    <option value="checkp">id</option>
</optgroup>
<optgroup label="ROLE_TEACHER">
    <option value="ROLE_TEACHER">Yes</option>
</optgroup>
<optgroup label="ROLE_STUDENT">
    <option value="ROLE_STUDENT">Yes</option>
</optgroup>
<optgroup label="ROLE_PARENT">
    <option value="ROLE_PARENT">Yes</option>
</optgroup>
</select>

现在我想知道如何在选择中为每个选项添加id。例如,

<option id="parent" value="ROLE_PARENT">Yes</option>

谢谢

添加choice_attr配置。像这样可以工作:

'choice_attr' => function($val) {
    list(, $roleName) = explode('_', $val, 2);
    return ['id' => strtolower($roleName)];
},