You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2 CheckboxList返回空数组 选中值无法提交存入数据库问题求解

问题核心原因

你控制器中只加载了$jegyModel的提交数据,从未将POST值赋值到$takModel上,导致quantArray永远是空数组。另外Sjegyek模型规则中chairnumber为必填项,你在赋值前触发验证会直接报错,无法走到保存逻辑。

修复步骤

  1. 修改控制器加载逻辑
    将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,
    ]);
}
  1. 可选优化
    如果需要在提交后回显选中的复选框,当前quantArray存取器逻辑已经符合要求,只要$takModel正常加载提交值就可以正常回显。

内容的提问来源于stack exchange,提问作者Awe Fiend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:54:01