2016-09-07 4 views
0
にオプションタグにIDを追加

バージョン:Symfonyの3symfonyの:複数選択

私は私のフォームで複数選択を持っているし、その次のように、

->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> 

おかげ

答えて

1

choice_attr設定を追加します。このようなものが動作します:

'choice_attr' => function($val) { 
    list(, $roleName) = explode('_', $val, 2); 

    return ['id' => strtolower($roleName)]; 
}, 
+0

ありがとう、しかし私は役割のために同じ配列を保つ必要があります。つまり、コードを変更することはできません。 – mapmalith

+0

あなたは何を言っているのか分かりませんか?あなたは固定された役割のリストを持つことができないということですか?はいの場合、私はそれに応じて私の答えを変更しました。 option-value/keyからid-valueを決める手段は任意です。私は例としてマップを使用しました。 – Yoshi

+0

@ PM-Riabel – Yoshi