1. 程式人生 > >thinkPHP5.0使用form表單提交數據和刪除文章,不用TP的提示頁面,使用彈出提示信息

thinkPHP5.0使用form表單提交數據和刪除文章,不用TP的提示頁面,使用彈出提示信息

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的提示頁面,使用彈出提示信息