volnix/paginate

一个简单的分页库,易于扩展以实现自定义分页操作。

2.0.1 2017-06-19 16:35 UTC

This package is auto-updated.

Last update: 2024-09-08 09:34:59 UTC


README

Build Status Coverage Status Total Downloads Latest Stable Version

Paginate 是一个极其简单的分页数据模型。它保存有关您的分页系统的元数据,以及任何给定时间的分页状态。它适用于服务器端分页模型、客户端分页构建视图以及两者之间的一切。

基本用法

如果需要,分页库可以无配置使用。Paginate 有 3 个配置设置,它们是关于您分页系统的元数据

  • 每页结果数(默认:50)- 每页显示的结果数
  • 页面范围(默认:2)- 显示在当前页面两侧的页面数(例如,如果您在第 5 页,则分页将显示第 3 页至第 7 页)
  • 索引(默认:'page')- 当前页面标识符通过 GET/POST 索引传递;当开始构建分页时很有用

无配置分页

// instantiate our pager
$pager = new \Volnix\Paginate\Pager;

// actually set the pagination parameters
$pager->paginate(1000, 5); // 100 results in result-set, current page = 5

注意: paginate 方法实际上是设置当前分页状态的方法。必须使用结果计数(和可选的当前页)来构建有用的分页信息。

上述用例将设置以下关于当前分页状态参数(这些对应于 Pager 的类变量)

  • 页数($max_page):20(1000 个结果,每页 50 个)
  • 当前页:5
  • 显示的页面范围($low_page - $high_page):3 - 7(2 页页面范围)
  • 查询跳过($query_skip):400(在每页 100 个结果的第 5 页上,因此跳过前 400 个,因为我们位于 401-500)

配置分页

您还可以通过构造函数传递元数据或调用 setConfig 方法来设置您想要的分页样式

// both of the below examples do the exact same thing
$pager = new \Volnix\Paginate\Pager(5, 5, 'foo');

$pager = new \Volnix\Paginate\Pager;
$pager->setConfig(5, 5, 'foo');

注意: 上述两个示例都没有调用 paginate 方法。在调用 paginate 方法之前,分页器没有任何价值,因为该方法实际上设置了您的当前状态。

分页信息

Pager 提供的核心信息由 Pager 提供的类变量组成,并且应该由任何扩展使用

  • paginate - 是否分页的布尔值
  • current_page - 当前页(通过 paginate 方法调用传递)
  • query_skip - ORM 查询下一个结果集时跳过的记录数
  • result_count - 需要分页通过的一组搜索条件匹配的总结果数
  • min_page - 分页的最小页码(始终为 1)
  • max_page - 分页的最大页码(等于结果数 / 每页结果数)
  • low_page - 要显示的页面范围的下限(由 $page_range 确定)
  • high_page - 要显示的页面范围的上限
public $paginate				= true; // whether to even paginate or not
public $current_page			= 1; // current page
public $query_skip				= 0; // the skip step to be passed into queries
public $result_count			= 0; // how many results we're paginating
public $min_page				= 1; // min page of all pages
public $max_page				= 1; // max page (i.e. results / results per page)
public $low_page				= 1; // low page in range of pages being displayed
public $high_page				= 1; // high page in range of pages being displayed

方法链

paginatesetConfig 方法都返回 Pager 对象,因此可以进行方法链

$pager = new \Volnix\Paginate\Pager;
$pager->setConfig(5, 5, 'foo')->paginate(100);

// OR

$pager = (new \Volnix\Paginate\Pager)->setConfig(5, 5, 'foo')->paginate(100);

API 分页

Paginate 可以返回包含有关 API 分页的相关信息的数组或 JSON。这些字段以两种格式返回

  • current:当前页
  • prev:上一页(如果处于分页的低端,则等于最小页码)
  • next:下一页(如果处于分页的高端,则等于最大页码)
  • skip:查询跳过的页数
  • min:最小页码
  • max:最大页码

注意: 如果没有分页,则prevnext都将等于1

扩展分页

这个库旨在扩展。一旦您有了基本的分页信息,就可以在您的项目中使用任何ORM或JavaScript库来构建服务器端、客户端等的分页。