Yii - 一个表单提交中的多个记录

goo*_*ose 5 forms activerecord model yii

有没有人知道如何在Yii中只使用一个表单添加多个记录?所有记录属于同一型号,格式相同.

非常感谢,

缺口

boo*_*dev 9

在相当于"batchCreate"方法从导向"BATCHUPDATE"可能是这样的:

public function actionBatchCreate() {
    $models=array();
    // since you know how many models
    $i=0;
    while($i<5) {
        $models[]=Modelname::model();
        // you can also allocate memory for the model with `new Modelname` instead
        // of assigning the static model
    }
    if (isset($_POST['Modelname'])) {
        $valid=true;
        foreach ($_POST['Modelname'] as $j=>$model) {
            if (isset($_POST['Modelname'][$j])) {
                $models[$j]=new Modelname; // if you had static model only
                $models[$j]->attributes=$model;
                $valid=$models[$j]->validate() && $valid;
            }
        }
        if ($valid) {
            $i=0;
            while (isset($models[$i])) {
                $models[$i++]->save(false);// models have already been validated
            }
            // anything else that you want to do, for example a redirect to admin page
            $this->redirect(array('modelname/admin'));
        }
    }

    $this->render('batch-create-form',array('models'=>$models));
}
Run Code Online (Sandbox Code Playgroud)

这里唯一担心的是,一个新的实例您所保存,使用每个模型创建new.其余逻辑可以以您希望的任何方式实现,例如在上面的示例中,所有模型都经过验证,然后保存,而如果任何模型无效,或者可能直接保存模型,您可能已停止验证,让save呼叫期间验证发生.所以逻辑真的取决于你的应用程序的ux.