与@R_701_301@失败后查看错误消息时相同.您可以将保存的模型传递给表单,而不是进行重定向.
public function actionIndex(){
$model = new Model();
if (isset($_POST[get_class($model)]){
$model->setAttributes($_POST[get_class($model)]);
if ($model->save()){
//do nothing
//usually people do a redirection here `$this->redirect('index');`
//or you can save a flash message
Yii::app()->user->setFlash('message','Successfully save form');
} else {
Yii::app()->user->setFlash('message','Failed to save form');
}
}
//this will pass the model posted by the form to the view,//regardless whether the save is successful or not.
$this->render('index',array('model' => $model));
}
在索引视图中,您可以执行类似的操作.
<?PHP if (Yii::app()->user->hasFlash('message')):?>
缺点是,当您不小心点击“刷新”按钮(F5)时,它会尝试再次发布表单.
或者您可以使用setFlash使用用户会话保存它.
public function actionUpload()
{
$model=new UploadModel();
$basemodel=new BaseContactList();
$importmodel=new ImportedFilesModel();
$importmodel->name =$basemodel->name;
$importmodel->import_date = $now->format('Y-m-d H:i:s');
$importmodel->server_path = $temp;
$importmodel->file_name = $name;
$importmodel->crm_base_contact_id = $crm_base_contact_id;
if ($importmodel->save())
echo "Import saved";
else
echo "Import Not Saved";
unset($_POST['BaseContactList']);
//here we go
Yii::app()->user->setFlash('form',serialize($basemodel));
//
$this->redirect(Yii::app()->request->urlReferrer);
}
在上一个表单中,您将加载会话中的值.
public function actionForm(){
if (Yii::app()->user->hasFlash('form')){
$basemodel = unserialize(Yii::app()->user->getFlash('form');
} else {
$basemodel = new BaseContactList();
}
$this->render('form',array('basemodel' => $basemodel));
}