dimmir / paginator-bundle
Flexible pagination bundle for Symfony 3. Created for use on the REST API
Installs: 29
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
pkg:composer/dimmir/paginator-bundle
Requires
- php: >=7.0
- doctrine/orm: ^2.5
- jms/serializer: ^1.7
- symfony/framework-bundle: ~3.2
Requires (Dev)
- phpunit/phpunit: 6.0.*
This package is not auto-updated.
Last update: 2025-10-26 06:57:03 UTC
README
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
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
}