《laravel的分页;layui page分页》
一、解决方案简述
在项目开发中,当数据量较大时,分页功能是不可或缺的。对于使用Laravel框架和前端采用layui的情况,可以通过Laravel对查询结果进行分页处理,在后端获取分页数据并以合适的格式返回给前端,前端利用layui的page模块来展示分页效果,从而实现前后端协同的分页功能。
二、Laravel分页
1. 数据库查询分页
在Laravel中,Eloquent模型提供了便捷的分页方法。例如,假设我们有一个表(articles),想要对进行分页显示。
```php
// 在控制器中
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
// 获取当前页码,默认为页
$currentPage = $request->input('page', 1);
// 每页显示的数据条数
$perPage = 10;
// 使用paginate方法进行分页查询
$articles = Article::orderBy('created_at', 'desc')->paginate($perPage, ['*'], 'page', $currentPage);
}
``
$articles->items()
这里获取当前页的数据项,
$articles->total()获取总的数据条数,
$articles->lastPage()`获取最后一页的页码,这些信息在与前端交互时非常有用。
三、layui page分页
1. 基础使用
在页面引入layui的css和js文件。
```html
html
然后创建一个容器用于放置分页组件。
javascript
接下来编写js代码来初始化分页组件,并且通过ajax获取分页数据。
layui.use(['laypage', 'layer'], function(){
var laypage = layui.laypage
,layer = layui.layer;
//模拟首页数据
var data = {
total : 500,// 总条数
perPage : 10 // 每页条数
};
//调用分页
laypage.render({
elem: 'demo' //注意,这里的 demo 是 ID,不用加 # 号
,count: data.total //数据总数,从服务端得到
,limit : data.perPage
,jump: function(obj, first){
//obj包含了当前分页的所有参数,比如:
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
console.log(obj.limit); //得到每页显示的条数
});
});
```
2. 其他思路 - 配置更多分页样式
如果想让分页看起来更符合项目需求,可以对laypage.render中的参数进行更多的配置,如设置布局、主题等。
javascript
laypage.render({
elem: 'demo'
,count: data.total
,limit : data.perPage
,layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] //自定义分页布局
,theme: '#1E9FFF' //设置主题颜色
,jump: function(obj, first){
if(!first){
$.ajax({
url : '/article/index',
type : 'get',
data : {
page : obj.curr,
limit : obj.limit
},
success : function(res){
if(res.code === 200){
var html = '';
res.data.forEach(function(item){
html += '<p>' + item.title + '</p>';
});
$('#content').html(html);
}else{
layer.msg('获取数据失败');
}
}
});
}
}
});
通过以上方式就可以实现Laravel与layui page分页的良好结合,根据实际项目需求选择合适的方式进行分页操作。