请问 Laravel 搭配 Bootstrap-table 如何实现服务器分页?
我在学习Laravel + bootstrap-table的时候发现无法服务器分页,调整每页显示条目数和点击其他页码均无法翻页和改变条目数,百度谷歌发现没有Laravel + bootstrap-table搭配的相关资料。
主要问题:
- 不知道控制器如何接受js传的参数(我写的bootstrap-table传参的方式不知道是否正确)
- 我尝试了
paginate()
发现生成的JSON输出失败
贴一下代码
html
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
{{--<h4 class="card-title">Default Table</h4>--}}
<div class="table-responsive">
<table id="field_instrument_ledgers_table"></table>
</div>
</div>
</div>
</div>
</div>
@endsection
JS
<script>
$("#field_instrument_ledgers_table").bootstrapTable({ // 对应table标签的id
url: "{{ route('field_instrument_ledgers.data') }}", // 获取表格数据的url
toolbar: '#toolbar', //工具按钮用哪个容器
showRefresh: true, //是否显示刷新按钮
showColumns: true, //是否显示所有的列
showToggle:true, //是否显示详细视图和列表视图的切换按钮
clickToSelect: true, //是否启用点击选中行
search: true,
method: 'post',
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹,默认为false
pagination: true, // 在表格底部显示分页组件,默认false
pageList: [10, 20], // 设置页面可以显示的数据条数
pageSize: 10, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'server', // 设置为服务器端分页
queryParams: function (params) {
return {
pageSize: params.limit, // 每页要显示的数据条数
offset: params.offset, // 每页显示数据的开始行号
sort: params.sort, // 要排序的字段
sortOrder: params.order, // 排序规则
}
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
{
checkbox: true, // 显示一个勾选框
align: 'center' // 居中显示
}, {
field: 'unit', // 返回json数据中的name
title: '单元', // 表格表头显示文字
width:500,
}, {
title: "操作",
width: 100, // 定义列的宽度,单位为像素px
formatter: function (value, row, index) {
return '<button class="btn btn-primary btn-sm" onclick="del(\'' + row.stdId + '\')">删除</button>';
}
}
],
onLoadSuccess: function(){ //加载成功时执行
console.info("加载成功");
},
onLoadError: function(){ //加载失败时执行
console.info("加载数据失败");
},
onDblClickRow: function (row) {
var details = layer.open({
type: 2,
title: '查看详情',
maxmin: true, //开启最大化最小化按钮
area: ['70%', '70%'],
content: '/field_instrument_ledgers/' + row.id,
});
layer.full(details);
}
})
</script>
控制器
public function data(Request $request)
{
$query = new FieldInstrumentLedger();
$res = $query->paginate($request->get('limit', 5))->toArray();
$data = [
'total' => $res['total'],
'rows' => $res['data']
];
return response()->json($data)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
推荐文章: