laravel自定义分页效果

发布时间 - 2026-01-11 02:28:16    点击率:

对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。

所以自己针对于此写了一个自己的分页,具体代码如下

<?php  
namespace ...;

use ...;
/**
 * 自定义分页类,适合少数据的查询,多数据的时候不推荐
 * Class CustomPaginate
 * @package App\Tools\Paginate
 */
class CustomPaginate
{
  /**
   * 自定义数组分页
   * @param $data = 返回结果
   * @param $page
   * @param $limit
   * @return mixed
   */
  public static function paginate($data, $page = 1, $limit = 10)
  {
    if (!is_numeric($page) || !is_numeric($limit)) {
      return false;
    }
    $count = count($data);
    $data = array_slice($data, ($page - 1) * $limit, $limit);
    return new LengthAwarePaginator($data, $count, $limit, $page);
  }

  /**
   * 参数解释 对外暴露的方法
   * @param $data = array|collection 切记只支持这两种
   * @param $page = 当前页
   * @param $limit = 每一页展示几条
   * @return array|false
   * 返回结果为数组
   * 调用实例: CustomPaginate::paginateToArray($data, $request->page, $request->limit);
   */
  public static function paginateToArray($data, $page = 1, $limit = 10)
  {
    $isValidate = self::validate($data, $page, $limit);           //验证
    if ($isValidate === false) {
      return false;
    }

    $res = self::paginate($data, $page, $limit)->toArray();         //分页数据转换为数组

    //上一页 || 下一页 => path
      if ($res['prev_page_url'] != null) {
        $prev_page = $page - 1;
        $res['prev_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $prev_page . "&limit=" . $limit;
      }
      if ($res['next_page_url'] != null) {
        $next_page = $page + 1;
        $res['next_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $next_page . "&limit=" . $limit;
      }
    return $res;
  }

  /**
   * 验证参数是否合法
   */
  public static function validate(&$data, &$page = 1, &$limit = 10)
  {
    $page = empty($page) ? 1 : $page;
    $limit = empty($limit) ? 10 : $limit;
    if (!is_array($data) && !$data instanceof Collection) {
      return false;//"自定义分页方法只支持数组数据和集合数据";
    }
    if (!is_numeric($page) || !is_numeric($limit)) {
      return false;//"page limit 参数只支持数字";
    }
    if ($data instanceof Collection) {
      return $data = $data->toArray();
    }
    return $data;
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# laravel  # 分页  # Laravel5.5 手动分页和自定义分页样式的简单实现  # PHP框架Laravel插件Pagination实现自定义分页  # laravel自定义分页的实现案例offset()和limit()  # laravel实现分页样式替换示例代码(增加首、尾页)  # Laravel手动分页实现方法详解  # Laravel+jQuery实现AJAX分页效果  # Laravel框架执行原生SQL语句及使用paginate分页的方法  # laravel手动创建数组分页的实现代码  # Laravel框架自定义分页样式操作示例  # 自定义  # 自己的  # 是有  # 下一页  # 上一页  # 写了  # 自带  # 于此  # 这两种  # 转换为  # 几条  # 大家多多  # 很好用  # 是否合法  # 当前页  # mixed  # App  # public  # page 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  教你用AI润色文章,让你的文字表达更专业  网站制作软件有哪些,制图软件有哪些?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel如何为API生成Swagger或OpenAPI文档  Laravel如何配置和使用缓存?(Redis代码示例)  个人网站制作流程图片大全,个人网站如何注销?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel如何实现数据库事务?(DB Facade示例)  如何在云主机快速搭建网站站点?  轻松掌握MySQL函数中的last_insert_id()  如何用AWS免费套餐快速搭建高效网站?  在Oracle关闭情况下如何修改spfile的参数  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何正确下载安装西数主机建站助手?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Java类加载基本过程详细介绍  Python文件异常处理策略_健壮性说明【指导】  北京网站制作的公司有哪些,北京白云观官方网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何用景安虚拟主机手机版绑定域名建站?  无锡营销型网站制作公司,无锡网选车牌流程?  如何确保西部建站助手FTP传输的安全性?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  php结合redis实现高并发下的抢购、秒杀功能的实例  微信小程序 闭包写法详细介绍  ,网页ppt怎么弄成自己的ppt?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在云指建站中生成FTP站点?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Linux系统运维自动化项目教程_Ansible批量管理实战  简历在线制作网站免费版,如何创建个人简历?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  昵图网官方站入口 昵图网素材图库官网入口  如何在建站之星网店版论坛获取技术支持?  深圳网站制作培训,深圳哪些招聘网站比较好?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  如何选择可靠的免备案建站服务器?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?