Yii setFlash getFlash用法
Yii里面的Flash由CWebUser管理, 也就是当前用户的唯一标示管理对象Yii::app()->user,下面具体解释下。
给出几个例子 # 获取1中 成功提示信息
View中部分代码:
如需要也可以把flash设置为只有执行了getFlashe方法才允许删除flash消息。只需要在配置文件里面设置用户组件属性autoUpdateFlash为FALSE即可
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> "; }
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>
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} Reply-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)); }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: php 数组去除空值array_filter()方法