Yii setFlash getFlash用法
来源:互联网 发布:南京毓铭网络怎么样 编辑:程序博客网 时间:2024/05/16 07:40
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>\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>
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));}
0 0
- Yii setFlash getFlash用法
- Yii setFlash
- yii setFlash
- Yii CDbCriteria常用用法
- yii的filter用法
- Yii的accessRules用法
- Yii CDbCriteria常用用法
- Yii中CDbCriteria用法
- Yii 面包屑用法
- Yii的accessRules用法
- Yii CDbCriteria常用用法
- yii 标签用法(模板)
- Yii Criteria 查询用法
- Yii:t()的用法
- Yii框架事务用法
- Yii的createCommand用法
- yii form表单用法
- Yii:t()的用法
- 九度 oj 题目1087:约数的个数
- Spring Boot应用连接数据库MySQL
- VC资源编辑器里对话框的大小和实际的像素尺寸显示问题 .
- js的数组知识
- Kali2.0 2016.2下VMtools的安装
- Yii setFlash getFlash用法
- [LeetCode]416. Partition Equal Subset Sum
- 设计模式之组合模式
- 轮廓描边效果
- CentOS服务器安全配置策略
- Android OkHttp完全解析 是时候来了解OkHttp了
- spring mvc详解
- MVC与WebForm的区别
- 1016. 部分A+B (15)