fdevs / pagination
PHP分页
0.3.0
2018-03-13 10:55 UTC
Requires
- php: >=5.5|^7.0
- symfony/options-resolver: ~2.8|~3.0|~4.0
Requires (Dev)
- doctrine/mongodb: ~1.3
- doctrine/orm: ~2.2
Suggests
- doctrine/mongodb: use with doctrine mongodb
- doctrine/orm: >= 2.2 use with doctrine orm
This package is auto-updated.
Last update: 2024-08-29 03:31:33 UTC
README
这是一个具有完全不同核心概念的PHP分页器。
如果你使用Symfony 2,你可以使用我们的分页桥接器!
安装
分页使用Composer,请访问Composer网站获取更多信息。
以下简单的命令将安装pagination
到你的项目中。它还会在你的composer.json
中添加一个新条目,并更新composer.lock
。
composer require fdevs/pagination
使用示例
控制器
use FDevs\Pagination\Type\ArrayType; use FDevs\Pagination\Model\CountPagination; use FDevs\Pagination\Extension\ArrayType\PageExtension; use FDevs\Pagination\Extension\ArrayType\LimitExtension; use FDevs\Pagination\Extension\ArrayType\OffsetExtension; use FDevs\Pagination\Extension\ArrayType\CountExtension; use FDevs\Pagination\Paginator; use FDevs\Pagination\Renderer\ClosureRenderer; $paginator = new Paginator(); $paginator ->addType(new ArrayType(),[PageExtension::class,CountExtension::class]) ; $closureRenderer = new ClosureRenderer(function($data) use ($template) {return $twig->render($template, $data);}); $pagination = $paginator->paginate(['a', 'b', 'c'], ['limit' => 1, 'page' => 2], new CountPagination()); $closureRenderer->render($pagination);
创建你的类型分页
<?php namespace App\Pagination\Type; use FDevs\Pagination\Model\PaginationInterface; class PDOType extends AbstractType { /** * {@inheritdoc} */ public function paginate($target, PaginationInterface $pagination, array $options) { //your logic //$pagination->setItems($target->fetchAll()); return $pagination; } /** * {@inheritdoc} */ public function support($target) { return $target instanceof \PDOStatement; } }
创建你的类型扩展
<?php namespace App\Pagination\Extension\PDO; use FDevs\Pagination\Extension\AbstractExtension; use FDevs\Pagination\Model\CountPaginationInterface; use FDevs\Pagination\Model\PaginationInterface; class CountExtension extends AbstractExtension { /** * {@inheritdoc} */ public function supportPagination(PaginationInterface $pagination) { return $pagination instanceof CountPaginationInterface; } /** * {@inheritdoc} */ public function prepareTarget($target, array $options, PaginationInterface $pagination) { /* @var $pagination CountPaginationInterface */ $pagination->setCount($target->rowCount()); return $target; } }
添加你的类型
//init pagination $paginator ->addType(new App\Pagination\Type\PDOType(),[App\Pagination\Extension\PDO\CountExtension::classs]) ;