vendor/knplabs/knp-paginator-bundle/src/Twig/Extension/PaginationExtension.php line 39

Open in your IDE?
  1. <?php
  2. namespace Knp\Bundle\PaginatorBundle\Twig\Extension;
  3. use Knp\Bundle\PaginatorBundle\Helper\Processor;
  4. use Knp\Bundle\PaginatorBundle\Pagination\SlidingPaginationInterface;
  5. use Twig\Environment;
  6. use Twig\Extension\AbstractExtension;
  7. use Twig\TwigFunction;
  8. final class PaginationExtension extends AbstractExtension
  9. {
  10.     /**
  11.      * @var Processor
  12.      */
  13.     private $processor;
  14.     public function __construct(Processor $processor)
  15.     {
  16.         $this->processor $processor;
  17.     }
  18.     public function getFunctions(): array
  19.     {
  20.         return [
  21.             new TwigFunction('knp_pagination_render', [$this'render'], ['is_safe' => ['html'], 'needs_environment' => true]),
  22.             new TwigFunction('knp_pagination_sortable', [$this'sortable'], ['is_safe' => ['html'], 'needs_environment' => true]),
  23.             new TwigFunction('knp_pagination_filter', [$this'filter'], ['is_safe' => ['html'], 'needs_environment' => true]),
  24.         ];
  25.     }
  26.     /**
  27.      * Renders the pagination template.
  28.      *
  29.      * @param \Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination<mixed> $pagination
  30.      * @param array<string, mixed>                                            $queryParams
  31.      * @param array<string, mixed>                                            $viewParams
  32.      */
  33.     public function render(Environment $envSlidingPaginationInterface $pagination, ?string $template null, ?array $queryParams = [], ?array $viewParams = []): string
  34.     {
  35.         return $env->render(
  36.             $template ?: $pagination->getTemplate(),
  37.             $this->processor->render($pagination$queryParams ?? [], $viewParams ?? [])
  38.         );
  39.     }
  40.     /**
  41.      * Create a sort url for the field named $title
  42.      * and identified by $key which consists of
  43.      * alias and field. $options holds all link
  44.      * parameters like "alt, class" and so on.
  45.      *
  46.      * $key example: "article.title"
  47.      *
  48.      * @param \Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination<mixed> $pagination
  49.      * @param string|array<string, mixed>                                     $key
  50.      * @param array<string, mixed>                                            $options
  51.      * @param array<string, mixed>                                            $params
  52.      */
  53.     public function sortable(Environment $envSlidingPaginationInterface $paginationstring $title$key, array $options = [], array $params = [], ?string $template null): string
  54.     {
  55.         return $env->render(
  56.             $template ?: $pagination->getSortableTemplate(),
  57.             $this->processor->sortable($pagination$title$key$options$params)
  58.         );
  59.     }
  60.     /**
  61.      * Create a filter url for the field named $title
  62.      * and identified by $key which consists of
  63.      * alias and field. $options holds all link
  64.      * parameters like "alt, class" and so on.
  65.      *
  66.      * $key example: "article.title"
  67.      *
  68.      * @param \Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination<mixed> $pagination
  69.      * @param array<string, mixed>                                            $fields
  70.      * @param array<string, mixed>                                            $options
  71.      * @param array<string, mixed>|null                                       $params
  72.      */
  73.     public function filter(Environment $envSlidingPaginationInterface $pagination, array $fields, ?array $options = [], ?array $params = [], ?string $template null): string
  74.     {
  75.         return $env->render(
  76.             $template ?: $pagination->getFiltrationTemplate(),
  77.             $this->processor->filter($pagination$fields$options ?? [], $params ?? [])
  78.         );
  79.     }
  80. }