dimmir / paginator-bundle
Flexible pagination bundle for Symfony 3. Created for use on the REST API
1.0.2
2017-05-22 05:08 UTC
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-03-30 04:07:49 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 }