A flash message is available only in the current and the next requests.
实际上,Yii::app()->user中的flash功能是由session实现的。
有趣的是,当一个页面既是get又是post(即提交表单后仍访问该页面),若刷新浏览器就会重复提交。此时,使用redirect和session既能传递变量又能防止重复提交。
action
public function actionTestForm(){
if(Yii::app()->request->getPost('test_form')){
//[TODO]
$msg = 'test message';
Yii::app()->user->setFlash('msg', $msg);
$this->refresh();
}
$this->render("test_form");
}
view
<?php if(Yii::app()->user->hasFlash('msg')): ?>
<div class="flash-message">
<?php echo Yii::app()->user->getFlash('msg'); ?>
</div>
<?php endif; ?>
<?php $form = $this->beginWidget('CActiveForm'); ?>
<?php echo CHtml::textField('text_form[field]'); ?>
<?php echo CHtml::submitButton(); ?>
<?php $this->endWidget(); ?>