rebolon/pager-component

简单的分页组件。它提供了一个简单的API来管理您的分页器。

dev-master 2013-01-10 18:56 UTC

This package is auto-updated.

Last update: 2024-09-13 09:46:52 UTC


README

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

Build Status

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

  • 你只想检索要显示的项目。在这种情况下,分页器必须能够显示这些项目并创建分页特性
  • 你已从Web服务检索到大量的列表。在这种情况下,分页器必须只显示当前页的项目,并显示分页特性

对于第一种情况,我的分页器可以帮助你获取限制和偏移值,以便你只检索所需的数据。

特性

  • 支持Twig模板(经典和Twitter Bootstrap模板)
  • 易于自定义和扩展

安装

将命名空间添加到你的autoloader中的app/autoload.php文件

``` php
'Rebolon'          => __DIR__.'/../src',
```

将PaginatorBundle添加到你的应用程序kernel中的app/AppKernel.php文件

``` php
new Rebolon\PagerBundle\RebolonPagerBundle(),
```

示例

你所需要知道的是分页器可能管理的项目数量(totalItem)。默认情况下,分页器内部有5个项目(1到5),并管理你想要显示的列表中的15个项目。因此,你可以使用容器简单使用分页器

``` php
$this->get('rebolon_pager.pager');
```

默认控制器中有一个示例,路由为rebolon/pager/test

你也可以为你的所有bundle配置自己的分页器,只需将以下内容添加到你的bundle的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)允许你了解列表中的项目是否必须显示 Have a look at the PagerTplInterface for others methods.

这里有几个Twig模板来展示分页器的可能性

  • standard是一个经典分页器
  • twt-bs是一个使用Bootstrap Twitter CSS框架的分页器
  • test和tewtWithLargeList用于bundle的示例控制器。它们是关于README开头提到的第一和第二种情况的示例

享受它!