Yii:用于在同一操作方法中处理记录创建和更新的控制器操作

时间:2012-10-12 19:21:07

标签: controller yii action

我无法在控制器中设置动作布局以获得一些基本功能。我有一个提供帐户基本信息的视图。帐户跨越许多字段,因此用户最有可能经常进行保存。我所经历的是每次进行保存时,都会创建一个新行。 actionCreate被调用,它只是转储到表中的数据中。我必须将用户放在同一个界面上,并填写所有数据。

从我到目前为止收集的内容来看,我没有actionCreate方法的action参数,因为它失败了,因为它在第一次保存时为null。

关注我的actionCreate控制器方法的代码段:

    public function actionCreate()
{
    $model=new Account;
    $accaddress=new AccAddress;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Account'],$_POST['AccAddress']))
    {
        $model->attributes=$_POST['Account'];

        if($model->save()) //Account data saving

            if (isset($_POST['AccAddress'])){
            //Yii::log('Dumping infomration for multiple models.');
            $accaddress->attributes=$_POST['AccAddress'];
            $accaddress->acc_id=$model->id;


            if ($pataddress->save()){//Account address saving
            }
            //$this->redirect(array('create','id'=>$model->id));
            }
    }

    $this->render('create',array(
        'model'=>$model,
        'accaddress'=>$accaddress,
        'tabss'=>$tabarray,
    ));
}

急切期待建议/意见。提前谢谢。

此致 费萨尔

1 个答案:

答案 0 :(得分:0)

看起来你正在使用Gii生成的代码,这很好。从你的帖子中有点不清楚到底出了什么问题,但这里有一些事情需要检查?

用户提交的数据是否存在问题是否存在问题?是否需要修复?如果是,那么您需要使用validation rules

您是否使用相同的表单来创建和更新记录?如果是这样,那么您需要确保将ID作为隐藏表单字段包含在某处。当您运行$model->attributes=$_POST['Account'];时,唯一能够更新现有记录的方法是ID是$_POST['Account']中遇到的字段之一。

帐户地址问题?例如,您是否尝试将多个帐户地址模型附加到一个帐户?如果是这样,您需要在此处添加逻辑以处理多种可能的模型。

希望其中一个有帮助。