先要composer一下yii的select2组件
use kartik\select2\Select2;
<?= $form->field($model, 'product_ids')->widget(Select2::classname()
,[ 'data' => Product::dropdownlist($model->industry_id),
'options' => ['multiple' => true,'placeholder' => '请选择 ...'],
'pluginOptions' => ['allowClear'=>true],]);?>
我在数据库中的product_ids字段的值是将数组通过php自带函数serialize序列化成为字符串,然后存入的。这个form字段提交表单后,后端会通过post['Website']['product_ids']获取名为product_ids的数组,然后unserialize一下再存入数据库。下面是更新操作里面后端的核心代码
$model->product_ids=unserialize($model->product_ids);
if(Yii::$app->request->isPost){
$posts=Yii::$app->request->post();
$model->product_ids=serialize($posts['Website']['product_ids']);
unset($posts['Website']['product_ids']);
$model->load($posts);
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
}