如何在Yii2应用程序中显示多选下拉列表中所选的值?

4
我正在使用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']) ?>

在创建数据插入表单方面,它的工作正常。但如何创建数组,以便我可以在更新表单上显示所选值。
编辑:
我刚刚发现如果我像这样使用它
<?= $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个回答

5

我已经解决了我的问题,如果有人遇到类似的问题,可以按照以下方法使用循环:

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

1
它节约了我的时间。谢谢 :) - Chinmay235

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接