1.前端页面:
先引入必要的layui.js和css文件。可去官网下载:https://www.layui.com/。
代码如下:
<!DOCTYPE html> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>用户展示</title> <link rel="stylesheet" type="text/css" href="__PUBLIC__/js/layui-v2.4.5/layui/css/layui.css"> <script type="text/javascript" src="__PUBLIC__/js/layui-v2.4.5/layui/layui.js"></script> <link rel="stylesheet" type="text/css" href="__PUBLIC__/css/layer.css"> <script type="text/javascript" src="__PUBLIC__/js/jquery-1.8.0.min.js"></script> <style> body{margin: 10px;} .demo-carousel{height: 200px; line-height: 200px; text-align: center;} </style> </head> <body> <table class="layui-hide" id="demo" lay-filter="test"></table> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> <div class="layui-tab layui-tab-brief" lay-filter="demo"> <div class="layui-tab-content"> <div class="layui-tab-item layui-show"> <div class="layui-carousel" id="test1"> </div> </div> <div class="layui-tab-item"> <div id="laydateDemo"></div> </div> <div class="layui-tab-item"> <div id="pageDemo"></div> </div> <div class="layui-tab-item"> <div id="sliderDemo" style="margin: 50px 20px;"></div> </div> </div> </div> <script> layui.config({ version: '1545041465480' //为了更新 js 缓存,可忽略 }); layui.use([ 'laypage', 'layer', 'table', 'element', 'slider'], function(){ var laypage = layui.laypage //分页 ,layer = layui.layer //弹层 ,table = layui.table //表格 ,element = layui.element //元素操作 //监听Tab切换 element.on('tab(demo)', function(data){ layer.tips('切换了 '+ data.index +':'+ this.innerHTML, this, { tips: 1 }); }); //执行一个 table 实例 table.render({ elem: '#demo' ,url: 'showUser' //数据接口 ,title: '用户表' ,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档 layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局 //,curr: 5 //设定初始在第 5 页 ,limit:2 //一页显示多少条 ,limits:[2,4,6]//每页条数的选择项 ,groups: 2 //只显示 2 个连续页码 ,first: "首页" //不显示首页 ,last: "尾页" //不显示尾页 } ,toolbar: 'default' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档 ,cols: [[ //表头 {type: 'checkbox', fixed: 'left'} ,{field: 'id', title: 'ID', width:50, sort: true} ,{field: 'username', title: '用户名', width:80} ,{field: 'realname', title: '真实姓名', width: 100, sort: true, totalRow: true} ,{field:'sex', title: '性别', width: 60 ,templet: function(d){ return (d.sex == "1") ? "男": "女"; } } ,{field: 'dept', title: '所在部门', width: 100, sort: true, totalRow: true} ,{field: 'role', title: '当前职位', width:100} ,{field: 'phone', title: '电话', width: 120} ,{field: 'email', title: '邮箱', width: 150} ,{field: 'ctime', title: '入职时间', width: 105, sort: true, totalRow: true} ,{fixed: 'right', width: 165, align:'center', toolbar: '#barDemo'} ]] }); //监听头工具栏事件 table.on('toolbar(test)', function(obj){ var checkStatus = table.checkStatus(obj.config.id) ,data = checkStatus.data; //获取选中的数据 switch(obj.event){ case 'add': layer.msg('添加'); break; case 'update': if(data.length === 0){ layer.msg('请选择一行'); } else if(data.length > 1){ layer.msg('只能同时编辑一个'); } else { layer.alert('编辑 [id]:'+ checkStatus.data[0].id); } break; case 'delete': if(data.length === 0){ layer.msg('请选择一行'); } else { layer.msg('删除'); } break; }; }); }); </script> </body> </html>
2.后台
在tp5 Controller层需要通过Mode实例化对象连接数据库查询表中的数据,然后以layui table的特定数组格式返回给前台,通过渲染实现数据的分页。
代码如下:
public function showUser(){ //获取总条数 $list = Users::all(); $count=count($list); //获取每页显示的条数 $limit= input('limit'); //获取当前页数 $page= input('page'); //计算出从那条开始查询 $tol=($page-1)*$limit; // 查询出当前页数显示的数据 $list = db('users')->limit($tol,$limit)->select(); //返回数据 $arr=array(); $arr['code']=0; $arr['msg']=""; $arr['count']=$count; $arr['data'] = $list; $arr_json=json_encode($arr); echo $arr_json; }
访问controller 层的showUser方法可以看到数组格式的数据:虽然中文格式乱码了,但是不用担心,只要你数据库设置的编码格式是utf-8并且前台也是中文编码就没问题。需要特别注意的是返回的数据格式必须要让table支持才可以,不然就会报接口错误。默认格式如下:
默认接受的数据格式 { code: 0, msg: "", count: 1000, data: [] }
后台已经得到数据,需要写一个方法先返回view层页面通过接口访问controller层方法获得数据才可以渲染:
public function returnShowUser() { //return $this->fetch(); return view('showUser'); }
然后输入地址:localhost/index.php/admin/index/returnShowUser 就可以看到成功分页了!