基於thinkphp5 + layui-table 實現分頁

// model 獲取分頁數據
class Test extends Model{

/**
*page 起始頁  limit 每頁的條數  ($page -1) *$limit 第幾條數據開始查詢
*
*
*/
public function paginate($limit = 10, $page = 1, $arr = [])
    {
        return self::where($arr)->limit(($page -1) *$limit, $limit)->select();
    }
}

controller 處理數據

  public function index()
    {
        if (input('get.key')) {   // 判斷是否是layui 接口請求數據
            $count,= count(\app\admin\model\Test::all());
            $arr =(new \app\admin\model\Test())->paginate(input("get.limit"),input("get.page"));
          return json(['code' => $code, "msg" => $msg, 'count' => $count, 'data' => $arr]);
        } else {  

            return view();
        }

index.html 頁面實現

 layui.use(['table','form'], function(){
        var table = layui.table,
            form =layui.form;

        table.render({
            elem: '#test'
            ,url:"{:url('Test/index')}"  // 接口請求地址
            ,where: {key: 'get'} //如果無需傳遞額外參數,可不加該參數  ,我是用來判斷是否是layui 請求參數的標誌
            ,method: 'get' //如果無需自定義HTTP類型,可不加該參數
            ,toolbar: '#toolbarDemo' //開啓頭部工具欄,併爲其綁定左側模板
            ,defaultToolbar: ['filter', 'exports', 'print', { //自定義頭部工具欄右側圖標。如無需自定義,去除該參數即可
                title: '提示'
                ,layEvent: 'LAYTABLE_TIPS'
                ,icon: 'layui-icon-tips'
            }]
            ,title: '品牌數據表'
            ,page: true
             ,height: 'full-150'
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}
                ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
                ,{field:'brand_name', title:'品牌名稱', width:120, edit: 'text'}
                ,{field:'brand_logo', title:'品牌LOGO', width:150, templet: function(res){
                        return '<img src="' + res.brand_logo +'">'
                    }}
                ,{field:'brand_url', title:'品牌網址', width:230, edit: 'text'}
                ,{field:'brand_desc', title:'品牌描述', width:200,edit: 'text'}
                ,{field:'status', title:'狀態', minWidth : 120, templet: '#switchStatus', unresize : true}
                ,{field:'create_time', title:'加入時間', width:120, sort: true}
                ,{field:'update_time', title:'最後變更時間', width:120}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
            ]]
        });

        //頭工具欄事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);

            switch(obj.event){
                case 'getCheckData':
                    var data = checkStatus.data;
                    console.log(data[0]);
                    layer.alert(JSON.stringify(data));
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('選中了:'+ data.length + ' 個');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全選': '未全選');
                    break;

                //自定義頭工具欄右側圖標 - 提示
                case 'LAYTABLE_TIPS':
                    layer.alert('這是工具欄右側自定義的一個圖標按鈕');
                    break;
            };
        });

        //監聽單元格編輯
        table.on('edit(test)', function(obj){
            var value = obj.value //得到修改後的值
                ,data = obj.data //得到所在行所有鍵值
                ,field = obj.field; //得到字段

            $.ajax({
                type: 'POST',
                url: "{:url('Brand/edit')}?key=cell",//修改單元格並向後臺發送請求
                data: {id:data.id,field:field,value:value},
                dataType : "json",
                success: function(result) {
                    console.log(result);
                    //發異步,把數據提交給php
                    if (result.code ==1) {

                        layer.msg(result.msg, {
                                icon: 6,time:2000
                            },
                            function() {
                                //關閉當前frame
                                xadmin.close();

                                //  可以對父窗口進行刷新
                                xadmin.father_reload();
                            });

                    }else{
                        layer.msg(result.msg + result.msg, {
                            icon: 2,time:2000
                        });
                    }
                }
            });

        });


        //監聽行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
             console.log(data)
            if(obj.event === 'del'){
                layer.confirm('確定刪除嗎?',  {icon: 3, title:'提示'}, function(index){
                    $.ajax({
                        type: 'POST',
                        url: "{:url('Brand/del')}?key=del",//發送請求
                        data: {id:data.id},
                        dataType : "json",
                        success: function(result) {
                            console.log(result);
                            //發異步,把數據提交給php
                            if (result.code ==1) {

                                layer.msg(result.msg, {
                                        icon: 6,time:2000
                                    },
                                    function() {
                                        obj.del();
                                        layer.close(index);
                                    });

                            }else{
                                layer.msg(result.msg + result.msg, {
                                    icon: 2,time:2000
                                });
                            }
                        }
                    });

                });
            } else if(obj.event === 'edit'){
                console.log(data)
                 xadmin.open('在tab打開刷新','{:url("Brand/edit")}?id='+data.id);

            }
        });


        //監聽提交
        form.on('switch(switchStatus)', function (data) {

            var id = data.value; //開關id   值,也可以通過data.elem.value得到
            var status=data.elem.checked==true?1:0;

            $.ajax({
                type: 'POST',
                url: "{:url('Brand/edit')}?key=switch",//發送請求
                data: {id:id,status:status},
                dataType : "json",
                success: function(result) {
                    console.log(result);
                    //發異步,把數據提交給php
                    if (result.code ==1) {

                        layer.msg(result.msg, {
                                icon: 6,time:2000
                            });

                    }else{
                        layer.msg(result.msg, {
                            icon: 2,time:2000
                        });
                    }
                }
            });
            return false;
        });


    });

以上就是layui -table 請求的簡單實現,就是這樣就可以分頁,要注意layui-table 每一次分頁請求都有 limit 、page兩個 參數,後臺接收參數並獲取數據庫的數據就行,其他的就交給layui-table渲染就行

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章