andrianzubko/sfw-paginator

此包已被废弃且不再维护。未建议替代包。

SFW 分页器

0.1.4 2023-11-06 14:17 UTC

This package is auto-updated.

Last update: 2024-02-18 14:56:00 UTC


README

此类用于组织某些数据的多页导航。主要用于在网站上构建多页导航面板。

安装

composer require andrianzubko/sfw-paginator

用法

// Making all calculations and storing results at class properties.
//
// All arguments are required and must contain only integer numbers.
$pg = new \SFW\Paginator(
    $totalEntries,   // total number of entries (>= 1)
    $entriesPerPage, // number of entries per page (>= 1)
    $pagesPerSet,    // number of pages per set (>= 1)
    $currentPage     // current number of page
);

// Get some property
$pg->totalEntries;

// or get all in array with keys in snake case
$pg->toArray()['total_entries'];

属性

切片参数

  • $pg->startOfSlice - 切片起始位置 (>= 0)

  • $pg->endOfSlice - 切片结束位置 (>= 0)

  • $pg->lengthOfSlice - 切片长度 (>= 1)

统计

  • $pg->totalEntries - 总条目数 (>= 1) (从参数复制而来)

  • $pg->entriesPerPage - 每页条目数 (>= 1) (从参数复制而来)

  • $pg->pagesPerSet - 每组页数 (>= 1) (从参数复制而来)

页面控制

  • $pg->totalPages - 总页数 (>= 1)

  • $pg->currentPage - 当前页数 (>= 1) (已修正)

  • $pg->prevPage - 上一页数 (>= 1 或 false)

  • $pg->nextPage - 下一页数 (>= 1 或 false)

页面组控制

  • $pg->startOfSet - 当前组的起始位置 (>= 1)

  • $pg->endOfSet - 当前组的结束位置 (>= 1)

  • $pg->pageOfPrevSet - 前一组的最近页面数 (>= 1 或 false)

  • $pg->pageOfNextSet - 后一组的最近页面数 (>= 1 或 false)

  • $pg->numbersOfSet - 组数(数组中的一个或多个数字)

示例

简单

             <-- previous page | next page -->
                   /                   \
           $pg->prevPage            $pg->nextPage

高级

                    $pg->currentPage
                            |
        $pg->prevPage       |           $pg->nextPage
                \           |                /
        <<       <       6 [7] 8 9 10       >       >>
        /               /           \                \
$pg->pageOfPrevSet     /             \    $pg->pageOfNextSet
                      /               \
            $pg->startOfSet       $pg->endOfSet
                     |                 |
                    [ $pg->numbersOfSet ]

统计

                $pg->totalPages
               /   $pg->totalEntries
Total pages: 20   /
Total records: 200
Shown from 61 to 70 records
             \     \
              \     $pg->startOfSlice + 1
               $pg->endOfSlice + 1

注意

  • 检查是否需要显示导航面板的最简单方法是检查 $pg->totalPages 属性。只有当此属性 >1 时才需要。

  • 在使用之前,必须检查 $pg->prevPage、$pg->nextPage、$pg->pageOfPrevSet 和 $pg->pageOfNextSet 属性的 false 值。