Yii2 CheckboxList返回空数组 选中值无法提交存入数据库问题求解
问题核心原因
你控制器中只加载了$jegyModel的提交数据,从未将POST值赋值到$takModel上,导致quantArray永远是空数组。另外Sjegyek模型规则中chairnumber为必填项,你在赋值前触发验证会直接报错,无法走到保存逻辑。
修复步骤
- 修改控制器加载逻辑
将actionFilm方法中的判断条件调整为同时加载两个模型的POST数据,同时调整赋值顺序,在验证前给chairnumber赋值:
public function actionFilm($id) { $jegyModel = new Sjegyek(); $takModel = new TakMolForm(); // 同时加载两个模型的提交数据 if ($jegyModel->load(Yii::$app->request->post()) && $takModel->load(Yii::$app->request->post())) { // 先赋值必填字段 $jegyModel->chairnumber = implode(',', $takModel->quantArray); $jegyModel->movieid = $id; if($jegyModel->save()) { return $this->render('test', [ 'model' => $this->findModel($id), 'jegyModel' => $jegyModel, 'takModel' => $takModel, ]); } else { return $this->render('film', [ 'model' => $this->findModel($id), 'jegyModel' => $jegyModel, 'takModel' => $takModel, ]); } } return $this->render('film', [ 'model' => $this->findModel($id), 'jegyModel' => $jegyModel, 'takModel' => $takModel, ]); }
- 可选优化
如果需要在提交后回显选中的复选框,当前quantArray存取器逻辑已经符合要求,只要$takModel正常加载提交值就可以正常回显。
内容的提问来源于stack exchange,提问作者Awe Fiend
相关产品推荐
相关产品推荐

