rebolon/pager-bundle

用于在 Symfony2 中使用分页器的扩展包

安装次数: 15

依赖者: 0

建议者: 0

安全性: 0

星标: 6

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2013-02-07 10:02 UTC

This package is auto-updated.

Last update: 2024-09-13 09:41:12 UTC


README

这是一个简单的用于 Symfony2 的分页器

Build Status

为什么你需要分页器?因为你有很多项目需要在单页上显示。但是有两种可能性

  • 你只想检索要显示的项目。在这种情况下,分页器必须能够显示这些项目并创建分页特征
  • 你已经检索到了一个巨大的列表(来自 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 中提到的第一种和第二种情况的示例

享受使用它!