我希望在成功提交表单后重定向。从模型1成功保存,然后将该PK用于模型2中的fk。最初我有小部件/组件。但我有越来越多的这些小部件,并希望寻找另一种解决方案。
我也尝试了$this->redirect(array('controller/action', 'id'=>$model->id));
,但问题是这个ID显示在网址中。我也不喜欢这样。
除了这两个之外还有其他方法吗?
答案 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
if(Yii::app()->user->hasState('id')){
$id=Yii::app()->user->getState('id');
}
另一个解决方案是使用Yii的Flash
。 state
和flash
之间的区别在于,一次使用后闪存将为空。如果您只想使用一次ID,这是一个很好的解决方案。
就像state
:
//save done
Yii::app()->user->setFlash('id',$THE_ID_YOU_WANT_TO_PASS);
Yii::app()->request->redirect('YOUR DESTINATION');
然后在目的地,您可以使用通过flash
if(Yii::app()->user->hasFlash('id')){
$id=Yii::app()->user->getFlash('id');
}
我希望这会对你有所帮助。