Yii setFlash getFlash用法

Yii setFlash getFlash用法Yii 里面的 Flash 由 CWebUser 管理 也就是当前用户的唯一标示管理对象 Yii app user 下面具体解释下

大家好,欢迎来到IT知识分享网。
Yii里面的Flash由CWebUser管理, 也就是当前用户的唯一标示管理对象Yii::app()->user,下面具体解释下。

1、设置消息

在Controller页面编写相关信息,用法:

//Yii::app()->user->setFlash($key,$value,$defaultValue=null)

给出几个例子:

# 成功信息提示

Yii::app()->user->setFlash('success', "Thinks saved success!");

# 错误信息提示

Yii::app()->user->setFlash('error', "here has an Error, Please check that!");

# 一般消息信息提示

Yii::app()->user->setFlash('notice', "messge here");

上面的$key即为键,可以自定义。Yii只是把上面的信息按照一定的规则放于用户的SESSION信息中。

2、获取消息

在view视图中,即前台页面指定$key来获取相应的信息,用法:

getFlash($key,$defaultValue=null,$delete=true);


给出几个例子

# 获取1中  成功提示信息

Yii::app()->user->getFlash('success');

可以通过简单的统一格式来显示这些信息:

foreach(Yii::app()->user->getFlashes() as $key => $message) { echo '<div class="flash-' . $key . '">' . $message . "</div>\n"; }

3、举个Yii数据库保存成功页面显示信息的例子

Controller中部分代码:

 if($yourModel ->save()){ Yii::app()->user->setFlash('success','修改信息成功,请提交!'); }//$yourModel 是某个Model的对象

View中部分代码:

<!--输出数据库保存成功信息--> <div id="databaseInfo"> <p align="center" class="MsoNormal" style="margin-top: 3px; margin-left: 5cm; text-align: left"> <span style="font-size: 16pt; color: blue; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'times new roman'; mso-hansi-font-family: 'times new roman'"> <b><?php echo Yii::app()->user->getFlash('success'); ?></b> </span> </p> </div>

Yii setFlash getFlash用法

4、原理说明

默认调用getFlashe这些方法后会自动删除SESSION值的。 在一个请求中, 请求页面设置的flash, 可以在它当前页面显示, 也可以用于下一个页面显示(比如用户注册成功后,需要302跳转到一个新页面中, 新页面来显示这个注册成功的消息。 这个是可行的),但是除此之外的请求中是不能显示的。 是因为Yii CWebUser会自动检查flash. 所以检查机制会自动删除这些过期的消息。



如需要也可以把flash设置为只有执行了getFlashe方法才允许删除flash消息。只需要在配置文件里面设置用户组件属性autoUpdateFlash为FALSE即可

array ( 'components'=>array( 'user' => array( 'autoUpdateFlash' => FALSE //设置为false ), ... ), ... )

5、补充

Flash也经常与CController方法refresh()方法一起使用来刷新页面:

/ * Displays the contact page */ public function actionContact() { $model=new ContactForm; if(isset($_POST['ContactForm'])) { $model->attributes=$_POST['ContactForm']; if($model->validate()) { $headers="From: {$model->email}\r\nReply-To: {$model->email}"; mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers); Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.'); $this->refresh(); // 刷新页面 } } $this->render('contact',array('model'=>$model)); }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/143828.html

(0)
上一篇 2025-04-30 20:45
下一篇 2025-04-30 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信