如何让Yii2.0复选框在加载表单时列出选中的项目


How to have Yii2.0 CheckboxList items as checked as the form loads?

我正在尝试在YII 2.0 Framework 中使用Activeform checkboxlist小部件

在我的例子中,我有一个名为"list"的数组,它包含将显示为checkboxlist的语言的名称,现在我可以做到这一点,但我希望在表单加载时选中复选框。

$list = [0 => 'PHP', 1 => 'MySQL', 2 => 'Javascript'];
$list2 = [0,2];

使用以下行,我可以使用HTML助手类获得我想要的内容:

<?= Html::checkboxList('CuisineId',$list2,$list); ?>

但我希望能够使用Activeform Widget CheckboxList来完成这项工作,根据文档,它将以以下方式使用:

静态复选框列表($items,$options=[])

因此,在我的情况下,我已经了解了如何通过以下方式传递$items的参数:

<?= $form->field($record, 'CuisineId')->checkboxlist($list);?> 

但现在我不知道如何传递允许复选框被选中的参数。

好的,我从yiiframework论坛本身得到了解决方案。

解决方案只是添加以下代码行,就成功了!:

$record->CuisineId = $list2;

求解
数据库

查看

控制器

$model = $this->findModel($id);
    $model->INDEXES =ArrayHelper::getColumn($model->publicationIndexes, 'INDEXES_ID');
    if ($model->load(Yii::$app->request->post())) {$model->save();}

查看(_form)

<?= $form->field($model, 'INDEXES')->checkboxList(ArrayHelper::map(Indexes::find()->all(), 'ID', 'NAME')) ?>