rebolon / pager-bundle
用于在 Symfony2 中使用分页器的扩展包
dev-master
2013-02-07 10:02 UTC
Requires
- rebolon/pager-component: dev-master
- symfony/framework-bundle: 2.*
- twig/twig: 1.*
This package is auto-updated.
Last update: 2024-09-13 09:41:12 UTC
README
这是一个简单的用于 Symfony2 的分页器
为什么你需要分页器?因为你有很多项目需要在单页上显示。但是有两种可能性
- 你只想检索要显示的项目。在这种情况下,分页器必须能够显示这些项目并创建分页特征
- 你已经检索到了一个巨大的列表(来自 Web 服务)。在这种情况下,分页器必须只显示当前页的项目,并且也显示分页特征
对于第一种情况,我的分页器可以帮助你获取限制和偏移值,以便你可以只检索所需的数据。
特性
- 支持 Twig 模板(经典和 Twitter Bootstrap 模板)
- 易于自定义和扩展
安装
将命名空间添加到 app/autoload.php 中的自动加载器
``` php
'Rebolon' => __DIR__.'/../src',
```
将 PaginatorBundle 添加到应用程序内核中的 app/AppKernel.php
``` php
new Rebolon\PagerBundle\RebolonPagerBundle(),
```
示例
你所需要知道的是分页器可以管理多少数据(总项目数)。默认情况下,分页器内部有 5 个项目(1 到 5),并且管理你想要显示的列表中的 15 个项目。因此,你可以使用容器来简单地使用分页器
``` php
$this->get('rebolon_pager.pager');
```
默认控制器中有一个示例,路由为 rebolon/pager/test
你也可以为你的所有包配置自己的分页器,只需将其添加到你的包的 services.xml 中
``` xml
<service id="mybundle.pager" class="%rebolon_pager.pager.class%">
<call method="setContainer">
<argument type="service" id="service_container" />
</call>
<call method="setSuffixName">
<argument>pagerForWS</argument>
</call>
<call method="setItemPerPage">
<argument>5</argument>
</call>
<call method="setMaxPagerItem">
<argument>3</argument>
</call>
</service>
```
要获取偏移/限制值,请使用 PagerInterface 中指定的方法
- 首先,你需要对要显示的列表执行 count(*)。然后将值传递给分页器的 init 方法。
- 使用 getOffset() 和 getItemPerPageParam() 方法检索查询的偏移和限制值
在模板内部,分页器为你提供创建显示分页所需的一切
- buildPager 将创建分页项列表(first/prev/X...Y/next/last)。它返回一个关联数组数组,键为 uri/label/title。
- isCurrentPage($pageId) 允许你确定循环中的项目是否是 currentPage
- isToDisplay($itemIndex) 允许你知道列表中的项目是否必须显示。请参阅 PagerTplInterface 以了解其他方法。
有几个 Twig 模板用于说明分页器的可能性
- standard 是一个经典的分页器
- twt-bs 是使用 Bootstrap Twitter CSS 框架的分页器
- test 和 tewtWithLargeList 由包的演示控制器使用。它们是关于 README 中提到的第一种和第二种情况的示例
享受使用它!