🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 分页 MixPHP 的分页类采用的一种非常灵活的设计方式,分页的构建都由视图层完成,可以构建任意结构的分页式样。 | 类 | 调用 | | --- | --- | | Mix\Pagination\Paginator | new Paginator([配置]); | ## 安装 ``` composer require mix/pagination ``` >[danger] 该类默认代码未包含, 需自行安装。 ## 模型范例 MixPHP 建议用户在模型中使用分页类,因为在模型内更加方便获取分页数据,分页数据可随分页对象由控制器传递至视图。 ~~~ // 模型内的方法 public function getPaginator($page) { return new Paginator([ // 数据结果集 'items' => $data, // 数据总行数 'count' => 987, // 当前页,值 >= 1 'page' => $page, // 每页显示数量 'perPage' => 10, // 固定最小最大页码 'fixedMinMax' => true, // 链接数量 'links' => 5, ]); } ~~~ ## 视图范例 我们设计了三个常用的分页式样,使用 bootstrap 的用户可直接复制代码使用,使用其他前端框架的用户只需修改相关的 HTML 即可。 ### 1. 带上下页且固定最小最大页 ![](https://box.kancloud.cn/4bf0410f76ea79a74ffd0b04dbcef5f2_502x83.png) ~~~ <?php if ($paginator->display()): ?> <nav aria-label="Page navigation"> <ul class="pagination"> <?php if ($paginator->hasPrev()): ?> <li><a href="/?page=<?= $paginator->prev(); ?>">上一页</a></li> <?php else: ?> <li class="disabled"><span>上一页</span></a></li> <?php endif; ?> <?php foreach ($paginator->numbers() as $number): ?> <?php if ($number->text == 'ellipsis'): ?> <li class="disabled"><span>...</span></li> <?php else: ?> <li <?= $number->selected ? 'class="active"' : ''; ?>><a href="/?page=<?= $number->text; ?>"><?= $number->text; ?></a></li> <?php endif; ?> <?php endforeach; ?> <?php if ($paginator->hasNext()): ?> <li><a href="/?page=<?= $paginator->next(); ?>">下一页</a></li> <?php else: ?> <li class="disabled"><span>下一页</span></a></li> <?php endif; ?> </ul> </nav> <p><?php echo "当前第 ", $paginator->page, " 页,共 ", $paginator->pages, " 页"; ?></p> <?php endif; ?> ~~~ ### 2. 纯数字固定最小最大页 ![](https://box.kancloud.cn/4f77c8872cb512688dff1a5172a948bc_366x78.png) ~~~ <?php if ($paginator->display()): ?> <nav aria-label="Page navigation"> <ul class="pagination"> <?php foreach ($paginator->numbers() as $number): ?> <?php if ($number->text == 'ellipsis'): ?> <li class="disabled"><span>...</span></li> <?php else: ?> <li <?= $number->selected ? 'class="active"' : ''; ?>><a href="/?page=<?= $number->text; ?>"><?= $number->text; ?></a></li> <?php endif; ?> <?php endforeach; ?> </ul> </nav> <p><?php echo "当前第 ", $paginator->page, " 页,共 ", $paginator->pages, " 页"; ?></p> <?php endif; ?> ~~~ ### 3. 带首尾页上下页 ![](https://box.kancloud.cn/93b3692f9eb429a1cec28db9af64ce92_453x81.png) ~~~ <?php if ($paginator->display()): ?> <nav aria-label="Page navigation"> <ul class="pagination"> <?php if ($paginator->hasFirst()): ?> <li><a href="/">首页</a></li> <?php else: ?> <li class="disabled"><span>首页</span></a></li> <?php endif; ?> <?php if ($paginator->hasPrev()): ?> <li><a href="/?page=<?= $paginator->prev(); ?>">上一页</a></li> <?php else: ?> <li class="disabled"><span>上一页</span></a></li> <?php endif; ?> <?php foreach ($paginator->numbers() as $number): ?> <li <?= $number->selected ? 'class="active"' : ''; ?>><a href="/?page=<?= $number->text; ?>"><?= $number->text; ?></a></li> <?php endforeach; ?> <?php if ($paginator->hasNext()): ?> <li><a href="/?page=<?= $paginator->next(); ?>">下一页</a></li> <?php else: ?> <li class="disabled"><span>下一页</span></a></li> <?php endif; ?> <?php if ($paginator->hasLast()): ?> <li><a href="/?page=<?= $paginator->totalPages; ?>">尾页</a></li> <?php else: ?> <li class="disabled"><span>尾页</span></a></li> <?php endif; ?> </ul> </nav> <p><?php echo "当前第 ", $paginator->page, " 页,共 ", $paginator->pages, " 页"; ?></p> <?php endif; ?> ~~~