laravel的分页;layui page分页

2025-03-09 0 28

《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);

    return response()->json([
        'code' => 200,
        'msg' => 'success',
        'data' => $articles->items(),
        'total' => $articles->total(),// 总数据条数
        'last_page' => $articles->lastPage()// 最后一页页码
    ]);
}

}
``
这里
$articles->items()获取当前页的数据项,$articles->total()获取总的数据条数,$articles->lastPage()`获取最后一页的页码,这些信息在与前端交互时非常有用。

三、layui page分页

1. 基础使用

在页面引入layui的css和js文件。
```html


然后创建一个容器用于放置分页组件。
html


接下来编写js代码来初始化分页组件,并且通过ajax获取分页数据。
javascript
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); //得到每页显示的条数

    if(!first){
        //首次不执行
        // 发送ajax请求获取对应的分页数据
        $.ajax({
            url : '/article/index',// 请求的后端接口地址
            type : 'get',
            data : {
                page : obj.curr
            },
            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('获取数据失败');
                }
            }
        });
    }
}

});
});
```

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分页的良好结合,根据实际项目需求选择合适的方式进行分页操作。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载