thedisco / li3_pagination
Lithium PHP 框架的分页助手
Requires
- php: >=5.3.6
- unionofrad/lithium: >=0.10
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
- 记录此助手支持的选项和过滤器。
- 添加对任意路由参数的支持。
- 为所有相关方法引入过滤器。
- 完成代码文档。
- 重构默认设置和配置。
- 完成测试