thedisco/li3_pagination

Lithium PHP 框架的分页助手

dev-master 2012-06-27 08:43 UTC

This package is auto-updated.

Last update: 2020-01-04 05:08:33 UTC


README

li3_pagination 是为了方便为 Lithium 框架项目生成分页而设计的。目前,助手可以从当前上下文或任意记录数生成分页。您无法为路由生成提供自定义参数。助手也无法从提供的记录集中提取查询。计划扩展助手的函数以支持自定义路由参数。

安装

将此存储库克隆到项目的 libraries 文件夹中。

cd /path/to/app/libraries
git clone https://github.com/theDisco/li3_pagination.git

在您可以使用此助手之前,您需要告诉 lithium 加载此扩展。最佳方式是在引导过程中将其添加为库

<?php

// /path/to/app/config/bootstrap/libraries.php

// ...
Libraries::add('li3_pagination', array('bootstrap' => false));
// ...

您还需要通知 lithium 如何从请求中映射页面参数。您可以使用下面的示例路由或根据您的需要进行更改

<?php

// /path/to/app/config/routes.php

// ...
Router::connect('/{:controller}/{:action}/page/{:page:[0-9]+}');
// ...

这就完了。您已设置好,准备好使用 li3_pagination 助手。

使用

li3_pagination 是为最小化设置而设计的,以全面控制分页。简而言之,您只需在控制器中检索结果并将它们传递给助手

<?php

// IndexController.php

// ...
public function index() {
    $limit = 10;
    $page = $this->request->page ?: 1;
    $options = compact('limit', 'page');
    $binding = Posts::find('all', $options);
    return compact('binding', 'options');
}
// ...
?>

在您的视图中,只需添加以下代码

<?php
echo $this->pagination->create($binding, $options);
echo $this->pagination->first();
echo $this->pagination->previous();
echo $this->pagination->pages();
echo $this->pagination->next();
echo $this->pagination->last();
echo $this->pagination->end();
?>

您还可以使用复合方法创建第一页、上一页、下一页和最后一页。

<?php
echo $this->pagination->create($binding, $options);
echo $this->pagination->pre();
echo $this->pagination->pages();
echo $this->pagination->post();
echo $this->pagination->end();
?>

默认情况下,即使分页中只有一个页面,li3_pagination 也会渲染页面。如果您想隐藏分页,可以使用以下语法

<?php
if ($this->pagination->create($binding, $options + array('start' => false))->count() > 1) {
    echo $this->pagination->start();
    echo $this->pagination->pre();
    echo $this->pagination->pages();
    echo $this->pagination->post();
    echo $this->pagination->end();
}
?>

li3_pagination 没有构造函数,在用法上与 Lithium 框架提供的表单助手非常相似。创建方法将绑定作为第一个参数,将选项数组作为第二个参数。只要实现了方法 model(),您就可以定义任何类作为绑定。由 model() 方法返回的值必须是字符串或可以调用方法 count() 的对象。基本上,\lithium\data\collection\RecordSet 是第一个参数的完美候选。第二个参数是选项数组。

如果您为模型定义了任何条件,li3_pagination 将无法检索正确的计数。在这种情况下,您可以将记录数作为 create() 方法的第一个参数提供。

<?php
echo $this->pagination->create('150', $options);
?>

配置和选项

$options = array(
    'page' => 1,
    'limit' => 20,
    'start' => true,
);

TODO 记录选项

TODO

  • 记录此助手支持的选项和过滤器。
  • 添加对任意路由参数的支持。
  • 为所有相关方法引入过滤器。
  • 完成代码文档。
  • 重构默认设置和配置。
  • 完成测试