Yii成功失败提示信息跳转的实现

本文介绍了在控制器类中添加三个方法用于处理成功和错误提示,包括自定义提示信息、跳转URL和等待时间,并提供了一个示例类和模板文件来实现这一功能。通过这些方法,可以更灵活地在应用程序中显示提示信息,增强用户体验。
摘要由CSDN通过智能技术生成

在components/Controller类里加三个方法,主要目的是为了能够在控制器中使用$this->success()  $this->error()这样的调用方式。


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Controller extends CController{
     
     /**
      * 成功提示
      * @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);" ;
             }
         }else{
$data['jumpUrl'] = Yii::app()->createUrl($jumpUrl);
}
         $this ->renderPartial( "//show_message" , $data );
     }
}




我们还需要一个模板文件 show_message.php,将它放到layouts目录下即可,模板代码如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!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{ 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:50%;margin-top:-50px;left:50%;margin-left:-250px;background-color:#FFF;}
.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" ><?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>

使用方法:

?
1
2
$this->success( "提示信息内容" , "index/index" , "停留时间,单位秒" );
$this->error(); //参数同上




例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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' );
         }
     }
}



效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值