获得pk后重定向到另一个控制器

时间:2014-01-29 19:55:53

标签: yii

我希望在成功提交表单后重定向。从模型1成功保存,然后将该PK用于模型2中的fk。最初我有小部件/组件。但我有越来越多的这些小部件,并希望寻找另一种解决方案。

我也尝试了$this->redirect(array('controller/action', 'id'=>$model->id));,但问题是这个ID显示在网址中。我也不喜欢这样。

除了这两个之外还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

您可以在Yii中使用states。 保存模型并获取ID后,您可以执行以下操作:

//save done
Yii::app()->user->setState('id',$THE_ID_YOU_WANT_TO_PASS);
Yii::app()->request->redirect('YOUR DESTINATION');

然后在目的地,您可以使用通过state

设置的ID
if(Yii::app()->user->hasState('id')){
$id=Yii::app()->user->getState('id');
}

另一个解决方案是使用Yii的Flashstateflash之间的区别在于,一次使用后闪存将为空。如果您只想使用一次ID,这是一个很好的解决方案。 就像state

一样
//save done
Yii::app()->user->setFlash('id',$THE_ID_YOU_WANT_TO_PASS);
Yii::app()->request->redirect('YOUR DESTINATION');

然后在目的地,您可以使用通过flash

设置的ID
if(Yii::app()->user->hasFlash('id')){
$id=Yii::app()->user->getFlash('id');
}

我希望这会对你有所帮助。