yii中設置提示成功信息,錯誤提示信息,警告信息


方法一:

<?php
Yii::app()->user->setFlash(‘success’,”Data saved!”); 設置鍵值名為success的臨時信息.在getFlash后刪除. 可以定義多種不同的鍵值名對象的消息.
?>

<?php if(Yii::app()->user->hasFlash(‘success’)):?> 消息存在里,
<div>
<?php echo Yii::app()->user->getFlash(‘success’); ?> 輸出消息內容,輸出后,就不存在了.
</div>
<?php endif; ?>

<?php //這是一段,在顯示后定里消失的JQ代碼,已集成至Yii中.
Yii::app()->clientScript->registerScript(
‘myHideEffect’,
‘$(“.info”).animate({opacity: 1.0}, 3000).fadeOut(“slow”);’,
CClientScript::POS_READY
);
?>

 

方法二:

http://www.yiiframework.com/forum/index.php/topic/22105-%E8%AF%B7%E9%97%AEyii%E9%87%8C%E9%9D%A2%E6%9C%89%E6%B2%A1%E6%9C%89%E6%98%BE%E7%A4%BA%E4%B8%B4%E6%97%B6%E6%B6%88%E6%81%AF%EF%BC%8C%E5%87%A0%E7%A7%92%E5%90%8E%E8%B7%B3%E8%BD%AC%E7%9A%84%E5%8A%9F%E8%83%BD%E5%95%8A%EF%BC%9F/

1,在CWebUser擴展類中

        publicfunction pushMessage($string=null, $type='successMsg')
       
{
               
if($string!=null){
                       
if($this->hasFlash($type))
                                $old
= $this->getFlash($type);
                       
else
                                $old
= array();
                        array_push
($old, $string);
                        $this
->setFlash($type, $old);
               
}
       
}
       
publicfunction showPutMsg()
       
{
                $show
='';
                $successName
='successMsg';
                $noticeName
='noticeMsg';
                $errorName
='errorMsg';
               
               
if($this->hasFlash($successName)){
                        $show
.='<div class="flash-success">';
                        $msg
=(array) $this->getFlash($successName);
                        $show
.='<ul>';
                       
for($i=0; $i<count($msg); $i++){
                                $show
.='<li>'. $msg[$i].'</li>';
                       
}
                        $show
.='</ul></div>';
               
}
               
if($this->hasFlash($noticeName)){
                        $show
.='<div class="flash-notice">';
                        $msg
=(array) $this->getFlash($noticeName);
                        $show
.='<ul>';
                       
for($i=0; $i<count($msg); $i++){
                                $show
.='<li>'. $msg[$i].'</li>';
                       
}
                        $show
.='</div>';
               
}
               
if($this->hasFlash($errorName)){
                        $show
.='<div class="flash-error">';
                        $msg
=(array) $this->getFlash($errorName);
                        $show
.='<ul>';
                       
for($i=0; $i<count($msg); $i++){
                                $show
.='<li>'. $msg[$i].'</li>';
                       
}
                        $show
.='</div>';
               
}
               
return $show;
       
}
       
       
publicfunction putSuccessMsg($string=null)
       
{
                $this
->pushMessage($string,'successMsg');
       
}
       
publicfunction putNoticeMsg($string=null)
       
{
                $this
->pushMessage($string,'noticeMsg');
       
}
       
publicfunction putErrorMsg($string=null)
       
{
                $this
->pushMessage($string,'errorMsg');
       
}




2,在controller中,可以有三種提示信息

Yii::app()->user->putSuccessMsg('操作成功啦!');
Yii::app()->user->putNoticeMsg('操作警告...');
Yii::app()->user->putErrorMsg('操作失敗了!');



3,最后在view中統一彈出便可。

<?php echo Yii::app()->admin->showPutMsg();?>



一般不要采用js彈窗形式,用戶體驗不是很好。

 

方法三:

public  function  redirect_message( $message = '成功' $status = 'success' , $time =3,  $url =false )
     {
      
         $back_color  = '#ff0000' ;
          
         if ( $status  == 'success' )
         {
             $back_color 'blue' ;
         }
          
         if ( is_array ( $url ))
         {
             $route =isset( $url [0]) ?  $url [0] :  '' ;
             $url = $this ->createUrl( $route , array_splice ( $url ,1));
         }
         if  ( $url )
         {
             $url  "window.location.href='{$url}'"
         }
         else
         {
             $url  "history.back();"
         }
         echo  <<<HTML
         <div>
         <div style= "background:#C9F1FF; margin:0 auto; height:100px; width:600px; text-align:center;" >
                     <div style= "margin-top:50px;" >
                     <h5 style= "color:{$back_color};font-size:14px; padding-top:20px;"  >{ $message }</h5>
                     頁面正在跳轉請等待<span id= "sec"  style= "color:blue;" >{ $time }</span>秒
                     </div>
         </div>
         </div>
                     <script type= "text/javascript" >
                     function  run(){
                         var  s = document.getElementById( "sec" );
                         if (s.innerHTML == 0){
                         { $url }
                             return  false;
                         }
                         s.innerHTML = s.innerHTML * 1 - 1;
                     }
                     window.setInterval( "run();" , 1000);
                     </script>
HTML;
     }
 
把代碼拷入 CController.php 文件下
 
 
方法四:
http://www.yiiframework.com/forum/index.php?/topic/8949-%E8%80%81%E5%A4%A7%EF%BC%8Cyii%E6%9C%89%E6%B2%A1%E6%9C%89%E8%B1%A1qeephp%E4%B8%AD%E7%9A%84-redirectmessage%E4%BF%A1%E6%81%AF%E6%8F%90%E7%A4%BA%E5%87%BD%E6%95%B0/page__p__44880
publicfunction redirectMessage($message, $url, $delay=5, $script='')
{
    $this
->layout=false;
   
if(is_array($url))
   
{
        $route
=isset($url[0])? $url[0]:'';
        $url
=$this->createUrl($route,array_splice($url,1));
   
}
   
return $this->render('/redirect', array(
       
'message'=> $message,
       
'url'=> $url,
       
'delay'=> $delay,
       
'script'=> $script,
   
));
}

把這個方法放到CBaseController中(也就是你的父控制器中,這樣,所有的控制器都以調用了, 就相當於全局函數了)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM