dimmir/paginator-bundle

Symfony 3 的灵活分页组件。专为 REST API 使用而创建

1.0.2 2017-05-22 05:08 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:43:08 UTC


README

Symfony 3 的灵活分页组件。本组件提供了一种简单的方法,将分页功能添加到您的 API 集合中。它易于与 FOSRestBundle 一起使用

Build Status Coverage Status Dependency Status

安装

您可以使用 composer 安装此组件

composer require dimmir/paginator-bundle

将组件添加到您的 AppKernel.php 文件中

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new DMR\Bundle\PaginatorBundle\PaginatorBundle(),
        // ...
    );
}

配置

dmr_paginator:
    items_per_page: 25                                  # default number items per page
    max_items_per_page: ~                               # The maximum number of items per page.
    page_request_parameter_name: page                   # The name of current page for query parameter
    client_items_per_page: false                        # To allow the client to set the number of items per page.
    items_per_page_request_parameter_name: itemsPerPage # The name of items per page query parameter
    options:                                            # options fo Paginator
        fetch_join_collection: true                     # The option fetchJoinCollection for Doctrine ORM Paginator

使用

当前分页器可以分页

  • Doctrine\ORM\QueryBuilder

与 FOSRestBundle 一起使用示例

// AppBundle\Controller\UserController.php

    /**
     * @View()
     */
    public function cgetAction (Request $request)
    {
        $queryBuilder = $this->getDoctrine()->getManager()
                    ->getRepository('AppBundle:User')->createQueryBuilder('u');

        $paginator = $this->get('dmr_paginator.service')->pagination($queryBuilder);

        return new SliderRepresentation($paginator);
    }

表示

DMR\Bundle\PaginatorBundle\Representation\CollectionRepresentation

{
  "items": [
    {
      "id": 1,
    },
  ],
  "pagination": {
    "page": 1,
    "itemsPerPage": 25,
    "totalItemsCount": 40,
    "pagesCount": 2
  }
}

DMR\Bundle\PaginatorBundle\Representation\SliderRepresentation

{
  "items": [
    {
      "id": 1,
    },
  ],
  "previus": 1,
  "next": 3
}