zephyr / pager
Pager bundle for symfony
Requires
- php: >=5.3.3
 - symfony/framework-bundle: >=2.1,<2.6-dev
 
This package is not auto-updated.
Last update: 2025-11-04 08:46:26 UTC
README
Features
- Twig and PHP template support
 - Easy to customize and extend
 - DoctrineORM and Array adapters support
 
Installation
- Copy the PagerBundle to /src/MakerLabs/PagerBundle
 - Register the bundle in your AppKernel
 - Run "./app/console assets:install web" command
 - Your done.
 
Usage
Controller
<?php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use MakerLabs\PagerBundle\Pager;
use MakerLabs\PagerBundle\Adapter\ArrayAdapter;
class ExampleController extends Controller
{
   /**
    *
    * @Route("/example/{page}", defaults={"page"=1}, name="example_route")
    * @Template()
    */
   public function exampleAction($page)
   {
      $array = range(1, 100);
      $adapter = new ArrayAdapter($array);
      $pager = new Pager($adapter, array('page' => $page, 'limit' => 25));
      return array('pager' => $pager);
   }
}
Twig template
{% if pager.isPaginable %}
   {{ paginate(pager, 'example_route') }}
{% endif %}
{% for item in pager.getResults %}
   <p>{{ item }}</p>
{% endfor %}
PHP template
<?php if ($pager->isPaginable()): ?>
    <?php echo $view['pager']->paginate($pager, 'example_route') ?>
<?php endif; ?>
<?php foreach ($pager->getResults() as $item): ?>
    <p><?php echo $item ?></p>
<?php endforeach; ?>
Default CSS styles
There are two default css styles located in web/bundles/makerlabspager/css/ (clean.css and round.css). You must include them manually in the layout template.
Adapters
ArrayAdapter
<?php
use MakerLabs\PagerBundle\Adapter\ArrayAdapter;
/* ... */
$adapter = new ArrayAdapter($your_array);
DoctrineOrmAdapter
<?php
use MakerLabs\PagerBundle\Adapter\DoctrineOrmAdapter;
/* ... */
$em = $this->getDoctrine()->getEntityManager();               
$qb = $em->getRepository('ExampleEntity')->createQueryBuilder('f');
$adapter = new DoctrineOrmAdapter($qb);
Customization
Passing additional parameters to the pager links
You can pass as many additional parameters as you will fit. For example lets modify our route example_route and pass an additional {type} parameter:
@Route("/example/{page}/{type}", defaults={"page"=1}, name="example_route")
Twig template:
{{ paginate(pager, 'example_route', {'type': 'long'}) }}
PHP template:
<?php echo $view['pager']->paginate($pager, 'example_route', array('type': 'long')) ?>
Changing the default 'page' parameter name
For example lets modify our route example_route and change the default {page} parameter to {offset}:
@Route("/example/{offset}", defaults={"offset"=1}, name="example_route")
Twig template:
{{ paginate(pager, 'example_route', {'_page': 'offset'}) }}
PHP template:
<?php echo $view['pager']->paginate($pager, 'example_route', array('_page': 'offset')) ?>
Modifying the default rendering template
There are 2 default rendering templates located in PagerBundle/Resources/views/Pager:
- Twig: paginate.html.twig
 - PHP: paginage.html.php
 
If you want to customize their HTML simply copy one of them to /app/Resources/MakerLabsPagerBundle/views/Pager
Alternatively you can pass the name of your template (in bundle:section:template.format.engine format) to the paginate helper:
Twig template:
{{ paginate(pager, 'example_route', {}, 'ExampleBundle:Example:name.html.twig') }}PHP template:
<?php echo $view['pager']->paginate($pager, 'example_route', array(), 'ExampleBundle:Example:name.html.php') ?>