文档章节

Yii学习笔记:进一步简化,提示信息跳转页面

吾爱
 吾爱
发布于 2013/12/28 23:35
字数 709
阅读 5392
收藏 8

在Yii类里加三个方法,Yii类是初始化的那个类,可以看我之前的博文《扩展YiiBase类》,主要目的是为了能够使用Yii::success()  Yii::error()这样的调用方式。

废话不多说,在Yii类中加三个方法如下:


class Yii extends YiiBase{
    
    /**
     * 成功提示
     * @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){
        $data = array(
            'msg' => $msg,
            'jumpurl' => $jumpurl,
            'wait' => $wait,
            'type' => $type
        );
        $data['title'] = ($type==1) ? "提示信息" : "错误信息";
        if(empty($jumpurl)){
            if($type==1){
                $data['jumpurl']=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:"javascript:window.close();";
            }else{
                $data['jumpurl'] = "javascript:history.back(-1);";
            }
        }
        $cc = new CController('showmessage');
        $cc->renderPartial("//show_message",$data);
    }
}



看最后一行

$cc->renderPartial("//show_message",$data);
这个是渲染提示信息模板,所以我们还需要一个模板文件 show_message.php,将它放到 protected/views 目录下即可,模板代码如下:
<!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>

使用方法:

Yii::success("提示信息内容","跳转链接","停留时间,单位秒");
Yii::error();//参数同上




例:

<?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');
        }
    }
}



效果图:

easy吧~~


原创,转载请注明出处。






© 著作权归作者所有

共有 人打赏支持
吾爱
粉丝 142
博文 267
码字总数 90553
作品 0
后端工程师
私信 提问
加载中

评论(2)

又想飞的鱼
又想飞的鱼
跳转的时候出现
该网页无法正常运作

admin.coo.com 目前无法处理此请求。
HTTP ERROR 500
貌似不能用
Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面

在实现Yii::success()这样的调用方式之前,你可能需要阅读我的这篇博文: 《Yii学习笔记:扩展YiiBase入口类》 之后请继续往下看: 首先我们在yii.php的Yii类里面添加两个方法: /** 成功提示...

吾爱
2013/12/28
0
0
Yii实战:将ThinPHP的success提示信息跳转功能移植到Yii上

本扩展是一个通用扩展,你可以将它移植到任何php项目中,该扩展来源于ThinkPHP的4个控制器方法success() error() ajaxReturn() dispatchJump()。 将jumpage目录复制到yii项目目录protectedex...

吾爱
2013/12/27
0
4
Yii2的一些小坑---关于跳转和助手类的灵活使用

YII本身的跳转很灵活。一般的MVC出现跳转的也不外乎: (1)V->V 页面之前的跳转 (2)C->V 正常的MVC方式 (3)V->C 请求数据接口数据传参,我还是一般都会用JS的ajax实现 这三种也都逃不了...

0_0Loong
01/15
0
0
yii中登录后跳转回登录前请求的页面

当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面。比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转...

bobshi
2013/09/25
0
1
yii2分页扩展之实现跳转到具体某页

作者:白狼 出处:http://www.manks.top/yii2_linkpager_widget.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任...

白狼栈
2016/06/05
26
0

没有更多内容

加载失败,请刷新页面

加载更多

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
12分钟前
0
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
29分钟前
12
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
31分钟前
1
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
今天
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部