为什么80%的码农都做不了架构师?>>>   

在实现Yii::success()这样的调用方式之前,你可能需要阅读我的这篇博文:

《Yii学习笔记:扩展YiiBase入口类》

之后请继续往下看:

首先我们在yii.php的Yii类里面添加两个方法:

/*** 成功提示* @param type $msg 提示信息* @param type $jumpurl 跳转url* @param type $wait 等待时间*/static function success($msg="",$jumpurl="",$wait=3){self::_jump($msg, $jumpurl, $wait, 1);}/*** 错误提示* @param type $msg 提示信息* @param type $jumpurl 跳转url* @param type $wait 等待时间*/static function error($msg="",$jumpurl="",$wait=3){self::_jump($msg, $jumpurl, $wait, 0);}/*** 最终跳转处理* @param type $msg 提示信息* @param type $jumpurl 跳转url* @param type $wait 等待时间* @param int $type 消息类型 0或1*/static private function _jump($msg="",$jumpurl="",$wait=3,$type=0){$info = array('msg' => $msg,'jumpurl' => $jumpurl,'wait' => $wait,'type' => $type);Yii::app()->user->setFlash('showmessage',$info);Yii::app()->runController("Site/ShowMessage");}

调用的时候可以指定 消息内容、跳转地址、停留时间。

继续,在应用默认的 SiteController 中添加如下方法:

        /*** 提示信息*/public function actionShowMessage(){$data = Yii::app()->user->getFlash('showmessage');//flash中读取提示信息if(empty($data) || !is_array($data) || !isset($data['msg']) || $data['msg']==""){Yii::app()->end();}if(!isset($data['wait'])){$data['wait'] = 3;}if(!isset($data['type'])){$data['type'] = 1;}$data['title'] = ($data['type']==1) ? "提示信息" : "错误信息";if(!isset($data['jumpurl']) || empty($data['jumpurl'])){if($data['type']==1){$data['jumpurl']=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:"javascript:window.close();";}else{$data['jumpurl'] = "javascript:history.back(-1);";}}$this->renderPartial("show_message",$data);}

在其对应的视图目录中添加视图文件 show_message.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微软雅黑'; color: #333; font-size: 16px; }
.system-message{ width:500px;height:100px; margin:auto;border:6px solid #999;text-align:center; position:relative;top:50px;}
.system-message legend{font-size:24px;font-weight:bold;color:#999;margin:auto;width:100px;}
.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
.system-message .jump{ padding-right:10px;height:25px;line-height:25px;font-size:14px;position:absolute;bottom:0px;left:0px;background-color:#e6e6e1 ; display:block;width:490px;text-align:right;}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 15px }
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
<fieldset class="system-message"><legend><?php echo $title;?></legend><div style="text-align:left;padding-left:10px;height:75px;width:490px;  "><?php if($type==1):?><p class="success">恭喜^_^!~<?php echo($msg); ?></p><?php else:?><p class="error">Sorry!~<?php echo($msg); ?></p><?php endif;?><p class="detail"></p></div><p class="jump">页面自动 <a id="href" href="<?php echo($jumpurl); ?>">跳转</a> 等待时间: <b id="wait"><?php echo($wait); ?></b></p>
</fieldset>
<script type="text/javascript">(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
totaltime=parseInt(wait.innerHTML);
var interval = setInterval(function(){var time = --totaltime;wait.innerHTML=""+time;if(time === 0) {location.href = href;clearInterval(interval);};
}, 1000);
})();</script>
</body>
</html>

到这里就完成了。

实例:

<?php
class PublicController extends CustomController {public function actionLogin(){$this->title = "商户后台登录";if(Yii::app()->request->isPostRequest){$identify = new CustomIdentity("admin","passwd");if($identify->authenticate() == true){Yii:app()->user->login($identify);}else{Yii::error("用户名或密码错误");}}else{$this->render('login');}}
}

效果图:

文章原创,转载请注明出处

转载于:https://my.oschina.net/cxz001/blog/188554

Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面相关推荐

  1. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

  2. Angular 4 学习笔记 从入门到实战 打造在线竞拍网站 基础知识 快速入门 个人感悟

    最近搞到手了一部Angular4的视频教程,这几天正好有时间变学了一下,可以用来做一些前后端分离的网站,也可以直接去打包web app. 先上个效果图: 环境&版本信息声明 运行ng -v @ ...

  3. QT学习笔记(-): 利用QHttp进行http下载(1)

    利用 Qhttp 实现http下载 今天学习了一下Qt的http下载(当然,利用http也可以实现上传), 利用的是QHttp这个类来实现, 实现方式比较简单, 下面给出实现方法供大家参考. 我们新建 ...

  4. FPGA学习笔记---利用连续赋值语句延时功能实现按键消抖

    最近一直在学习FPGA,今天在学习延时语句时,发现了连续赋值的一个特点.在连续赋值语句中添加延时时,任何小于延迟值的输入变化都会被滤除而不会体现在输出上.比如  #10 B = A; 当A的变化小于1 ...

  5. [QOCA学习笔记]利用QOCA软件PCA模块进行共模误差分析

    操作环境:win10+虚拟机ubuntu下QOCA(ver 1.33) 数据:通过解算得到的安徽省CORS参考站坐标时间序列(neu格式) QOCA软件是优秀的GNSS坐标时间序列分析软件,其简介及P ...

  6. dx12 龙书第七章学习笔记 -- 利用Direct3D绘制几何体(续)

    1.帧资源 之前,我们在处理CPU和GPU的同步问题时,采取以下方法:在每帧绘制的结尾调用D3DApp::FlushCommandQueue函数,以确保GPU在每一帧都能正确完成所有命令的执行 这样做 ...

  7. 机器学习之聚类学习笔记-利用python的sklearn实现

    学习来源 sklearn中文文档 聚类算法练习 python代码实现K-means算法 Python数模笔记-Sklearn(2)聚类分析 均值偏移聚类 K-means聚类算法 该算法可分为三个步骤. ...

  8. Yii学习笔记【2】

    视图渲染流程: render($view, $data, $return)| beforeRender()| 渲染View文件,调用renderPartial(),要求处理输出结果||----> ...

  9. Yii学习笔记之二(使用gii生成一个简单的样例)

    1. 数据库准备 (1) 首先我们建一数据库 yii2test 并建立一张表例如以下: DROP TABLE IF EXISTS `posts`; CREATE TABLE `posts` (`pos ...

最新文章

  1. tensorflow基于csv数据集实现多元线性回归并预测
  2. 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)
  3. VMware发布vSphere Big Data Extensions
  4. SAP License:FM-基金管理详解(实例)
  5. 【报告分享】Facebook IQ 2020年热门话题和趋势报告.pdf(附下载链接)
  6. 计算机网络与安全维护实训报告,计算机网络与安全管理专业实习报告
  7. noip2015day1 T1 4510 神奇的幻方
  8. DataGrid分页(1)
  9. exploration 和 exploitation 的区别
  10. antd table分页每页中文设置
  11. .bat脚本初体验——使用批处理bat清洗文件名
  12. 寻找最小生成树的欧拉路径,即一笔画问题
  13. 2018 ACM-ICPC 北京站 游记
  14. ico图标在线制作工具以及带步骤(图文教程)
  15. 在线直播源码评论弹幕是如何“练”成的?
  16. nasm ces纠正性训练 nsca-cpt体能训练 pes cscs 体能训练 acsm
  17. mysql客户端与服务端的区别,终于彻底把握了
  18. FX5u控制4个伺服,一个完整的项目 回原点、JOG手动、绝对定位、相对定位、控制等部分
  19. 服务器虚拟化巡检报告,vmvare虚拟化平台巡检周报
  20. [MySQL] 零基础学MySQL 04

热门文章

  1. Waiting for Debugger
  2. ios 设计模式 MVC ,MVVM
  3. 多协议注入工具t50
  4. NMAP分布式扫描工具dnmap
  5. Xamarin提示Build-tools版本过老
  6. Highmaps网页图表教程之图表配置项结构与商业授权
  7. arcgis运行python脚本一段时间后会卡,为什么这个python多处理脚本在一段时间后会变慢?...
  8. python占多少空间_Python如何查看变量占用空间大小
  9. HoloLens再添一应用领域!Microsoft和Trimble联手开启设施管理新篇章!
  10. 华为程序员频交Linux内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交...