anh/paginator

分页库

v0.2.2 2015-04-27 10:44 UTC

This package is auto-updated.

Last update: 2024-09-06 10:01:15 UTC


README

Build Status Scrutinizer Code Quality SensioLabsInsight

安装

$ php composer.phar require 'anh/paginator:0.2.*'

用法

创建分页器并使用数据、页面编号和每页元素数量调用它的paginate()方法。它将找到合适的适配器并返回填充了分页数据的Page实例,可以直接用于foreach循环。您还可以传递手动创建的适配器而不是数据。

<?php

use Anh\Paginator\Paginator;

$query = /* ORM Query or QueryBuilder for fetching users */;

$paginator = new Paginator();
$users = $paginator->paginate($query, 1, 10);

foreach ($users as $user) {
    // do something with user
}

如果您需要将选项传递给适配器,请将它们作为第四个参数传递给paginate()。请注意,每个适配器都有自己的选项。

<?php

use Anh\Paginator\Paginator;
use Anh\Paginator\Adapter\ArrayAdapter;

$data = array(/* elements */);

$paginator = new Paginator();
$elements = $paginator->paginate($data, 3, 20, array('preserveKeys' => true));

foreach ($elements as $key => $element) {
    // do something with element
}

您可以创建自定义适配器并将它们添加到AdapterResolver。所有适配器都必须实现AdapterInterface接口。

<?php

use Anh\Paginator\Paginator;
use Anh\Paginator\AdapterResolver;

$adapterResolver = new AdapterResolver();
$adapterResolver->addAdapter('Some\Custom\Adapter1');
$adapterResolver->addAdapter('Some\Custom\Adapter2');

$paginator = new Paginator($adapterResolver);
$elements = $paginator->paginate($data, $pageNumber, $elementsPerPage);

foreach ($elements as $element) {
    // do something with element
}

渲染

<?php

use Anh\Paginator\Paginator;
use Anh\Paginator\View\AdaptiveView;

$paginator = new Paginator();
$posts = $paginator->paginate(/* ... */);

$view = new AdaptiveView();
$view->setTemplates(array(/* templates */));
$view->setOptions(array(/* options */));

echo $view->render($posts, '/some/url/page-%page%', array(/* options */));

有关模板和选项的完整列表,请参阅源代码。您还可以使用resource/pagination.css对分页器进行样式设计。它基于foundation zurb的分页。

可用的适配器

  • EmptyDataAdapter
  • ArrayAdapter
  • DoctrineOrmAdapter

版本控制

库使用语义版本控制

许可

MIT