vinyvicente/silex-knp-paginator

Paginator Provider to Silex 2.0

v1.0.3 2018-04-04 20:58 UTC

This package is auto-updated.

Last update: 2024-03-08 06:22:35 UTC


README

Plugin KNP Paginator to Silex 2.0

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads composer.lock

Dependencies

  • PHP 7+
  • Silex 2.0+
  • Twig 2.0+

How to Use

Based on Knp Pagination Bundle

See more: Docs

Integrating with Silex below

require 'vendor/autoload.php';

use Silex\Application;
use Silex\Knp\PaginatorProvider;
use Symfony\Component\HttpFoundation\Request;

$app = new Application();
$app['debug'] = true;
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__ . '/views',
));

// needs be after twig register :)
$app->register(new PaginatorProvider());

$app['knp_paginator.options'] = array(
    'default_options' => array(
        'sort_field_name' => 'sort',
        'sort_direction_name' => 'direction',
        'filter_field_name' => 'filterField',
        'filter_value_name' => 'filterValue',
        'page_name' => 'page',
        'distinct' => true,
    ),
    'template' => array(
        'pagination' => '@knp_paginator_bundle/sliding.html.twig',
        'filtration' => '@knp_paginator_bundle/filtration.html.twig',
        'sortable' => '@knp_paginator_bundle/sortable_link.html.twig',
    ),
    'page_range' => 5,
);

$app->get('/', function(Request $request) use ($app) {

    $array = [
        'foo' => ['id' => 'foo'],
        'bar' => ['id' => 'bar'],
        'baz' => ['id' => 'baz'],
        'echo' => ['id' => 'echo'],
        'delta' => ['id' => 'delta'],
    ];

    $currentPage = (!empty($request->get('page'))) ? $request->get('page') : 1;
    $limitPage = 3;

    $sort = $request->get('sort');
    $direction = $request->get('direction', 'asc');

    $knp = $app['knp_paginator'];
    $paginator = $knp->paginate($array, $currentPage, $limitPage);
    $paginator->setCurrentPageNumber($currentPage);
    $paginator->setItemNumberPerPage($limitPage);

    return $app['twig']->render('example.html.twig', ['pagination' => $paginator]);
});

$app->run();

Twig

Read the Docs