使用相同的表单一次处理多个记录

时间:2013-02-18 00:38:43

标签: yii multiple-records

我有一个包含同一用户的多个记录的表(每个记录略有不同 - 原因)。 我需要能够使用标准的Yii格式一次编辑一条记录。

我已经尝试了以下代码,但我需要它等待每个表单提交,然后循环继续显示下一条记录的表单。目前,它在一个页面上同时显示每条记录的表格。

我确定我曾经想过如何在很多很多项目之前做过这样的事情,但我不记得我做了什么让它正常工作:(

public function actionProcess()
{
    $system = get some data;

    foreach ($system as $item):
        $this->getExperience($item);
    endforeach;
}

protected function getExperience($item)
{
    $model = get data for the form

    if(isset($_POST['the_form'])):
        $model->attributes=$_POST['the_form'];
        if($model->save())
            return true;
    endif;

    $this->render('the_form', array('model'=>$model,));
}

1 个答案:

答案 0 :(得分:0)

感谢您的建议。我想出了我自己的解决方案,我将为其他人的利益分享:

$_stack = array(); // defined in the Class global space

public function actionProcess()
{
    $system = get some data

    foreach ($system as $item):
        $this->_stack[] = $item->id;
    endforeach;

    if(!empty($this->_stack))
        $this->getExperience();
}

protected function getExperience()
{
    if(empty($this->_stack))
        $this->redirect(array('somewhere else'));

    $model = get data for the form using $_stack[0] as the reference for what to obtain

    if(isset($_POST['the_form'])):
        $model->attributes=$_POST['the_form'];

        if($model->save()):
            array_shift($this->_stack);
            $this->getExperience();
        endif;
    endif;

$this->render('the_form', array('model'=>$model,));
}