php - desplegable - lista de opciones html
¿Cómo se muestran los valores seleccionados en el menú desplegable de selección múltiple en una aplicación Yii2? (1)
Estoy trabajando en Yii2. Estoy creando un menú desplegable de selección múltiple usando una matriz personalizada como esta.
En archivo de controlador:
$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);
}
En renderizar datos en la vista:
return $this->render(''mngr_userupdate'', [
''model'' => $model,
''all_groups_array''=>$all_groups_array,
''case''=>$case,
''email_error'' => ''false'',
''applied_email'' => '''' ,
]);
así que está creando una matriz como esta:
Array
(
[11] => Mngr1 group
[14] => Mngr 11 Group
)
En el archivo vies:
<?= $form->field($model, ''group_user[]'')->dropDownList($all_groups_array,[''multiple'' => ''multiple'']) ?>
Está funcionando bien en crear formulario para la inserción de datos. pero cómo crear una matriz con la que puedo mostrar los valores seleccionados en el formulario de actualización.
Editar:
Acabo de descubrir que si lo uso como
<?= $form->field($model, ''group_user[]'')->dropDownList($all_groups_array,[''multiple'' => ''multiple'', ''options''=>[''14''=>["Selected"=>true],''11'' => ["Selected"=>true]]]); ?>
luego comenzará a mostrar los valores seleccionados. es decir, tengo que crear una matriz como
[
''14''=>["Selected"=>true],
''11'' => ["Selected"=>true]
]
Para esto estoy usando loop como sigue:
foreach ($selected_groups as $key => $value) {
$sel_groups_array[$value] = '''' // what should be there or else
}
¿Cómo puedo crear esta matriz usando loop?
He creado la solución de mi pregunta. En caso de que alguien tenga ese tipo de problema, entonces puede usar el ciclo de la siguiente manera:
foreach ($selected_groups as $group) {
$sel_groups_array[$group->id] = array("selected"=>true);
}
y en el archivo de vistas puede usar la matriz para mostrar los valores múltiples seleccionados de la siguiente manera:
<?= $form->field($model, ''group_user[]'')->dropDownList($all_groups_array,[''multiple'' => ''multiple'',''options'' => $sel_groups_array]); ?>
Debido a que la estructura muestra múltiples valores seleccionados en el formulario de actualización, debe ser como sigue:
$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