xandros15 / slim-pagination
为 slim3 使用的简单分页
0.1.1
2020-12-16 23:57 UTC
Requires
- php: >=7.0.0
- slim/slim: ^3.0
Requires (Dev)
- slim/php-view: ^2.1
- slim/twig-view: ^2.1
- symfony/var-dumper: ^3.1
This package is auto-updated.
Last update: 2024-09-03 01:30:08 UTC
README
为 slim3 使用的简单分页
需求
PHP 7.0 或更高版本
Slim 3.0
安装
通过 composer: composer require xandros15/slim-pagination
基本用法
在控制器回调中创建分页对象,通过渲染器获取它并将其作为变量传递
<?php use Xandros15\SlimPagination\Pagination; $app->get('/users', function (Request $request, Response $response) { $users = User::search($request); $pagination = new Pagination($request, $this->get('router'),[ Pagination::OPT_TOTAL => count($users), //number of items ]); $paginationString = $this-view->fetch('pagination', ['pagination' => $pagination]); return $this->view->render('user.index', ['pagination' => $paginationString]); })->name('user.index');
通过模板管理器进行渲染。
PHP 模板示例
<nav class="text-center col-xs-12"> <ul class="pagination"> <?php /** @var $pagination Xandros15\SlimPagination\Pagination */ ?> <?php if ($pagination->previous()['isCurrent']): ?> <li class="disabled"> <span><?= $pagination->previous()['pageName'] ?></span> </li> <?php else: ?> <li> <a aria-label="previous" href="<?= $pagination->previous()['pathFor'] ?>"> <span aria-hidden="true"><?= $pagination->previous()['pageName'] ?></span> </a> </li> <?php endif ?> <?php foreach ($pagination as $page): ?> <?php if ($page['isSlider']): ?> <li class="disabled"> <span><?= $page['pageName'] ?></span> </li> <?php elseif ($page['isCurrent']): ?> <li class="active"> <span><?= $page['pageName'] ?></span> </li> <?php else: ?> <li> <a href="<?= $page['pathFor'] ?>"><?= $page['pageName'] ?></a> </li> <?php endif; ?> <?php endforeach; ?> <?php if ($pagination->next()['isCurrent']): ?> <li class="disabled"> <span><?= $pagination->next()['pageName'] ?></span> </li> <?php else: ?> <li> <a aria-label="next" href="<?= $pagination->next()['pathFor'] ?>"> <span aria-hidden="true"><?= $pagination->next()['pageName'] ?></span> </a> </li> <?php endif ?> </ul> </nav>
Twig 模板示例
{% if pagination.canCreate %} <nav class="text-center col-xs-12"> <ul class="pagination"> {% if pagination.previous.isCurrent %} <li class="disabled"> <span>{{ pagination.previous.pageName | raw }}</span> </li> {% else %} <li> <a aria-label="previous" href="{{ pagination.previous.pathFor }}"> <span aria-hidden="true">{{ pagination.previous.pageName | raw }}</span> </a> </li> {% endif %} {% for page in pagination %} {% if page.isSlider %} <li class="disabled"><span>{{ page.pageName }}</span></li> {% elseif page.isCurrent %} <li class="active"><span>{{ page.pageName }}</span></li> {% else %} <li><a href="{{ page.pathFor}}">{{ page.pageName }}</a></li> {% endif %} {% endfor %} {% if pagination.next.isCurrent %} <li class="disabled"> <span aria-hidden="true">{{ pagination.next.pageName | raw }}</span> </li> {% else %} <li> <a aria-label="next" href="{{ pagination.next.pathFor }}"> <span aria-hidden="true">{{ pagination.next.pageName | raw }}</span> </a> </li> {% endif %} </ul> </nav> {% endif %}
选项
页面列表类型
PageList::NORMAL
是带有滑块的普通分页
PageList::MINI
是简约分页
可以通过简单的代码创建
twig
{% for page in pagination %} {% if page.isCurrent %} <li class="disabled"><span>{{ page.pageName }}</span></li> {% else %} <li><a href="{{ page.pathFor }}">{{ page.pageName }}</a></li> {% endif %} {% endfor %}
php
<?php foreach ($pagination as $page): ?> <?php if ($page['isCurrent']): ?> <li class="disabled"> <span><?= $page['pageName'] ?></span> </li> <?php else: ?> <li> <a href="<?= $page['pathFor'] ?>"><?= $page['pageName'] ?></a> </li> <?php endif; ?> <?php endforeach; ?>
PageList::NONE
关闭分页
方法和属性
页面
pathFor
- 返回此页面的路径
isCurrent
- 检查此页面是否为当前页面
pageName
- 返回页面名称(例如,编号)
isSlider
- 检查此页面是否为滑块
分页
previous()
- 获取上一页,如果不存在则返回当前页
next()
- 获取下一页,如果不存在则返回当前页
first()
- 获取第一页
last()
- 获取最后一页
canCreate()
- 检查是否可以创建分页
toArray()
- 返回定义的参数数组
- per_page: 每页有多少项
- current_page: 当前页码
- next_page_url: 下一页的路径
- prev_page_url: 上一页的路径
- from: 第一项的编号
- to: 最后一项的编号
toJson()
- 与 toArray() 相同,只是编译成 JSON 字符串