序言
為了讓使用者有更加良好的體驗,在操作成功或者失敗後,來個提示並跳轉頁面,我就在Yii2上實現了這一個效果。在寫這個跳轉提示頁的時候,找資料我發現網上關於這方面的中文資料真的很少,大家也都共用下吧!
需求分析
1、使用者在操作成功或者失敗後,來個提示並跳轉頁面。2、使用這種方式$this->success(),$this->error()調用(仿造Yii2內建 $this->render()載入頁面的方式)。
樣式有點醜,但是功能是好的,要是不喜歡這樣式大家可以自行美化一下!
程式碼分析
1、在控制器的基類Controller.php裡邊增加兩個方法,這麼寫:
/** * 通用成功跳轉 * @param unknown $url 成功後跳轉的URL * @param number $sec 自動跳轉秒數 * @return Ambigous */ public function success($url= [] ,$sec = 3){ $url= empty($url)? ['/admin/main']: $url; $url= /yii/helpers/Url::toRoute($url); return $this->renderPartial('../base/msg',['gotoUrl'=>$url,'sec'=>$sec]); } /** * 通用錯誤跳轉 * @param string $msg 錯誤提示資訊 * @param number $sec * @return Ambigous */ public function error($msg= '',$sec = 3){ return $this->renderPartial('../base/msg',['errorMessage'=>$msg,'sec'=>$sec]); }
2、在loginviewsbase的下面建立一個命名為msg.php的頁面,代碼如下:
'.$errorMessage.'
';?> 恭喜!操作成功! 該頁將在3秒後自動跳轉!
">立即跳轉 返回上一頁
3、完成以上步驟之後就可以在login模組下的控制器裡邊直接調用了,調用方式如下:
成功的調用方式: return $this->success([‘/site/login’]);
失敗的調用方式: return $this->error(‘資料修改失敗!’);
常見問題
1、跳轉提示的JS寫在如下我注釋的地方了,寫在那的話就不起作用了,得寫在外面才行。
beginBlock('JUMP_JS')?> (function(){ //跳轉提示的JS寫在這了。不能寫在這,寫在這裡就不起作用了。 });endBlock(); $this->registerJs($this->blocks['JUMP_JS'],/yii/web/view::POS_END);?>