thinkPHP5.0使用form表單提交數據和刪除文章,不用TP的提示頁面,使用彈出提示信息
阿新 • • 發佈:2018-06-04
javascrip splay CA tar typeof box php5 跳轉 sheet
form表單提交數據和刪除文章時,TP的默認信息提示頁面的看起來不是很好看,想要實現彈窗提示怎麽做呢?
前端:可以使用前端的一個知識--iframe,iframe元素會創建包含另外一個文檔的內聯框架;target,規定在何處打開鏈接文檔。
另外想要實現一個好看的方便、能重復使用的彈窗就要開發一個彈窗插件了,這裏推薦使用前端的彈窗插件sweetalert.js,為了方便、重復使用我們把它成封裝一個函數,頁面要引入sweetalert.js的css和js文件
後端:為了方便以後重復使用,先寫一個公共函數,就是調用之前前端封裝的函數彈出提示信息
一、form提交數據,前端HTML代碼,要把iframe隱藏,否則會顯示iframe在頁面;form中target表示在iframe中打開form表單
<iframe style="display: none" name="if"></iframe> <form action="{:url(‘login/index‘)}" method="post" target="if"> <div class="panel loginbox"> <div class="panel-body"> <div class="form-group"> <div class="field field-icon-right"> <input type="text" name="username" id="username" placeholder="登錄賬號" required value="admin" /> <span class="icon icon-user margin-small"></span> </div> </div> <div class="form-group"> <div class="field field-icon-right"> <input type="password" class="input input-big" name="password" id="password" placeholder="登錄密碼" required/> <span class="icon icon-key margin-small"></span> </div> </div> </div> <div style="padding:30px;"> <input type="submit" id="button" class="button button-block bg-main text-big input-big" value="登錄"> </div> </div> </form>
前端封裝的函數
1 /** 2 * 提示彈窗 3 * @param text 彈窗內容 4 * @param type 圖標類型,默認null,可以填寫success、error、warning、info、question 5 * @param bool showCancelButton 是否顯示取消按鈕 6 * @param callback 按下確認鍵後執行的函數 7 * @param all_callback 按到按鈕之外,彈窗消失時執行函數 8 */ 9 10 function my_alert(text,type,callback,showCancelButton,all_callback) { 11 var now_text = text ? text : ‘你確定嗎‘; 12 var now_type = type ? type : null; 13 var now_showCancelButton = showCancelButton ? showCancelButton : false; 14 var now_callback = callback ? callback : function () {}; 15 var all_callback = all_callback ? all_callback : function (dismiss) {}; 16 17 if (typeof(arguments[1]) == "function") { 18 now_type = null; 19 now_callback = arguments[1]; 20 now_showCancelButton = arguments[2]; 21 } 22 23 swal({ 24 text:now_text, 25 type:now_type, 26 showCancelButton:now_showCancelButton, 27 confirmButtonText:‘確定‘, 28 cancelButtonText:‘取消‘, 29 30 }).then(function () { 31 now_callback(); 32 },all_callback) 33 }
後端封裝公共函數
1 /** 2 * iframe 窗口調用父窗口:parent.functionName(); 3 * @param $data 彈窗信息 4 * @param string $type 彈出框的類型 5 * @param bool $is_reload 是否刷新 6 * @param string $url 新頁面打開地址 7 * @param 8 */ 9 function php_alert($data,$type = ‘error‘, $is_reload = false, $url = ‘‘){ 10 if(empty($url) && !$is_reload){ 11 echo "<script>parent.my_alert(‘$data‘,‘$type‘)</script>"; 12 die; 13 }else if (empty($url) && $is_reload){ 14 echo "<script>parent.my_alert(‘$data‘,‘$type‘,function() {parent.location.reload();})</script>"; 15 }else{ 16 echo "<script>parent.my_alert(‘$data‘,‘$type‘,function() {parent.location.href = ‘$url‘;})</script>"; 17 die; 18 } 19 }
使用,回調地址要寫模塊/控制器/方法,如果不寫模塊admin會把控制器article作為模塊,報article模塊不存在
1 if($save){ 2 //$this->success(‘添加文章成功‘,‘index‘); 3 php_alert(‘添加文章成功!‘,‘success‘,false,‘/admin/article/index‘); 4 }else{ 5 php_alert(‘添加文章失敗!‘,‘error‘,false); 6 //$this->error(‘添加文章失敗‘,‘index‘); 7 }
彈出validate驗證信息
1 $validate = \think\Loader::validate(‘Article‘); 2 if($validate->scene(‘update‘)->check($data)){ 3 4 }else{ 5 $msg = $validate->getError(); 6 php_alert($msg,‘error‘,false); 7 }
二、刪除文章、管理員
後端封裝函數,因為刪除數據時頁面會跳轉的,頁面沒有sweetalert插件的相關文件的,所以要輸出引入相關文件
1 /** 2 * 自定義tp自帶的跳轉提示頁; 3 * @param data 彈窗信息 4 * @param string $type 彈出框的類型 5 * @param string callable 新頁面打開地址 6 */ 7 function alert_msg($text=‘‘,$type=‘error‘,$callback=‘‘){ 8 echo ‘<meta charset="utf-8" /><link href="/public/static/common/css/sweetalert.min.css" rel="stylesheet"><script src="/public/static/admin/js/jquery_002.js"></script><script type="text/javascript" src="/public/static/common/js/sweetalert.min.js"></script> <script src="/public/static/admin/js/my_config.js"></script>‘; 9 echo "<script>window.onload=function () {my_alert(‘$text‘,‘$type‘,function() {location.href = ‘$callback‘;})}</script>"; 10 die; 11 }
調用
1 public function del(){ 2 $del = db(‘admin‘)->where(‘id‘,input(‘id‘))->delete(); 3 if($del){ 4 alert_msg(‘刪除管理員成功!‘,‘success‘,‘/admin/admin/index‘); 5 }else{ 6 alert_msg(‘刪除管理員失敗!‘,‘error‘,‘/admin/admin/index‘); 7 } 8 }
thinkPHP5.0使用form表單提交數據和刪除文章,不用TP的提示頁面,使用彈出提示信息