gmarche/src/Framework/Twig/PagerFantaExtension.php

52 lines
1.2 KiB
PHP

<?php
namespace Framework\Twig;
use Framework\Router;
use Pagerfanta\Pagerfanta;
use Pagerfanta\View\TwitterBootstrap4View;
class PagerFantaExtension extends \Twig_Extension
{
/**
* @var Router
*/
private $router;
public function __construct(Router $router)
{
$this->router = $router;
}
public function getFunctions()
{
return [
new \Twig_SimpleFunction('paginate', [$this, 'paginate'], ['is_safe' => ['html']])
];
}
/**
* Génère la pagination
* @param Pagerfanta $paginatedResults
* @param string $route
* @param array $routerParams
* @param array $queryArgs
* @return string
*/
public function paginate(
Pagerfanta $paginatedResults,
string $route,
array $routerParams = [],
array $queryArgs = []
): string {
$view = new TwitterBootstrap4View();
return $view->render($paginatedResults, function (int $page) use ($route, $routerParams, $queryArgs) {
if ($page > 1) {
$queryArgs['p'] = $page;
}
return $this->router->generateUri($route, $routerParams, $queryArgs);
});
}
}