2017-02-10 9 views
1

Я работаю над Yii2. Я создаю несколько выпадающих списков с помощью настраиваемого массива, подобного этому.Как отображать выбранные значения в раскрывающемся списке нескольких вариантов в приложении Yii2?

В файле контроллера:

$all_groups = Groups::find()->where(['=','group_created_by',$id])->orwhere(new Expression('FIND_IN_SET(:id_to_find, group_managers)'))->addParams([':id_to_find' => $id])->all(); // fetch all values 

$selected_groups = Groups::find()->where(['=','group_users',$updateId])->orwhere(new Expression('FIND_IN_SET(:id_to_find, group_users)'))->addParams([':id_to_find' => $updateId])->all(); // getting selected values 

$all_groups_array = []; 

foreach ($all_groups as $group) { 
    $all_groups_array[$group->id] = ucfirst($group->group_name); 
} 

На визуализации данных на представлении:

return $this->render('mngr_userupdate', [ 
         'model' => $model, 
         'all_groups_array'=>$all_groups_array, 
         'case'=>$case, 
         'email_error' => 'false', 
         'applied_email' => '' , 
         ]); 

так это создание массива, как это:

Array 
(
    [11] => Mngr1 group 
    [14] => Mngr 11 Group 
) 

В соперничает файл:

<?= $form->field($model, 'group_user[]')->dropDownList($all_groups_array,['multiple' => 'multiple']) ?> 

Он отлично работает для создания формы для ввода данных. но как создать массив, в котором я могу отображать выбранные значения в форме обновления.

Edit:

Я просто нашел, что если я использую его как

<?= $form->field($model, 'group_user[]')->dropDownList($all_groups_array,['multiple' => 'multiple', 'options'=>['14'=>["Selected"=>true],'11' => ["Selected"=>true]]]); ?> 

, то он начнет выводить значения, выбранные. то есть я должен создать массив как

[ 
'14'=>["Selected"=>true], 
'11' => ["Selected"=>true] 
] 

Для этого я использую цикл, как следующим образом:

foreach ($selected_groups as $key => $value) { 
      $sel_groups_array[$value] = '' // what should be there or else 
      } 

Как я могу создать этот массив, используя цикл?

ответ

1

Я создал решение моего вопроса, в случае, если кто-нибудь имеет такой вид проблемы, то он может использовать цикл, как выглядит следующим образом:

foreach ($selected_groups as $group) { 

    $sel_groups_array[$group->id] = array("selected"=>true); 
} 

и в воззрениях файл, который вы можете использовать массив для отобразить выбранные несколько значений следующим образом:

<?= $form->field($model, 'group_user[]')->dropDownList($all_groups_array,['multiple' => 'multiple','options' => $sel_groups_array]); ?> 

поскольку структура для отображения нескольких выбранных значений на форме обновления, оно должно быть, как выглядит следующим образом:

$form->field($model, 'group_user[]')->dropDownList($all_groups_array,['multiple' => 'multiple', 'options'=>['14'=>["Selected"=>true],'11' => ["Selected"=>true]]]); 
// here 14 and 11 I am using as example