Skip to content

Flexible pagination bundle for Symfony 3. Created for use on the REST AP

License

Notifications You must be signed in to change notification settings

dimmir/PaginatorBundle

Repository files navigation

PaginatorBundle

Flexible pagination bundle for Symfony 3. This bundle provides an easy way to add pagination support to the collection of your API. It easy used with FOSRestBundle

Build Status Coverage Status Dependency Status

Installation:

You can install this bundle using composer:

composer require dimmir/paginator-bundle

Add the bundle to your AppKernel.php file:

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

Configuration

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

Usage

Currently paginator can paginate:

  • Doctrine\ORM\QueryBuilder

Example for used with 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);
    }

Representations

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
}

About

Flexible pagination bundle for Symfony 3. Created for use on the REST AP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages