博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yii框架的flash消息
阅读量:6832 次
发布时间:2019-06-26

本文共 1891 字,大约阅读时间需要 6 分钟。

hot3.png

见过的所有的MVC(Rails, TP, CakePHP)中,Flash这个东西都是放于SESSION中的, Yii也不例外。Yii里面的Flash由CWebUser管理, 也就是当前用户的唯一标示管理对象Yii::app()->user

设置消息方式:

[php]//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");[/php]

上面的$key所有的都是可以自定义的. Yii只是把上面的信息按照一定的规则放于用户的SESSION信息中。

前台页面显示时候可以通过getFlash($key,$defaultValue=null,$delete=true)来获取指定的$key来获取相应的信息。

[php]# 获取成功提示信息Yii::app()->user->getFlash('success');[/php]

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

[php]foreach(Yii::app()->user->getFlashes() as $key => $message) {    echo '
' . $message . "
\n";}[/php]

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

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

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

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

[php]/** * 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));}[/php]

转载于:https://my.oschina.net/liufeng815/blog/353554

你可能感兴趣的文章
powerdesigner 设置自动增长列(identity)和默认值
查看>>
Click Button to change the color of TextView
查看>>
oracle preparestmt 插入时间
查看>>
Java系的几种WebServer和ApplicationServer
查看>>
Android之菜单二——上下文菜单
查看>>
JavaScript中onmouseover时如何让鼠标指针变成一个小手状
查看>>
clear:both; 用法 什么时候用
查看>>
三层结构
查看>>
【简报】超棒的拖放式文件上传javascript类库:FileDrop
查看>>
连续子数组的最大和
查看>>
转: Oracle AWR 报告 每天自动生成并发送邮箱
查看>>
solr dataimport 数据导入源码分析(十)总结
查看>>
So easy,JQuery调用WebServices
查看>>
GNU make manual 翻译(四十七)
查看>>
makefile中变量覆盖的小例子
查看>>
所有类型都从Object类型派生
查看>>
关于MFC和android开发上的一些相近地方
查看>>
Linux下rsync的用法
查看>>
c# DataGridView控件的使用
查看>>
TChart的用法
查看>>