vendor/knplabs/knp-paginator-bundle/src/Subscriber/SlidingPaginationSubscriber.php line 46
<?phpnamespace Knp\Bundle\PaginatorBundle\Subscriber;use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;use Knp\Component\Pager\Event\PaginationEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\HttpKernelInterface;final class SlidingPaginationSubscriber implements EventSubscriberInterface{private ?string $route = null;/** @var array<string, mixed> */private array $params = [];/** @var array<string, mixed> */private array $options;/*** @param array<string, mixed> $options*/public function __construct(array $options){$this->options = $options;}public function onKernelRequest(RequestEvent $event): void{if (HttpKernelInterface::MAIN_REQUEST !== $event->getRequestType()) {return;}$request = $event->getRequest();$this->route = $request->attributes->get('_route');$this->params = \array_replace($request->query->all(), $request->attributes->get('_route_params', []));foreach ($this->params as $key => $param) {if (\str_starts_with($key, '_')) {unset($this->params[$key]);}}}public function pagination(PaginationEvent $event): void{// default sort field and order$eventOptions = $event->options;if (isset($eventOptions['defaultSortFieldName']) && !isset($this->params[$eventOptions['sortFieldParameterName']])) {$this->params[$eventOptions['sortFieldParameterName']] = $eventOptions['defaultSortFieldName'];}if (isset($eventOptions['defaultSortDirection']) && !isset($this->params[$eventOptions['sortDirectionParameterName']])) {$this->params[$eventOptions['sortDirectionParameterName']] = $eventOptions['defaultSortDirection'];}// remove default sort params from pagination linksif (isset($eventOptions['removeDefaultSortParams']) && true === $eventOptions['removeDefaultSortParams']) {$defaultSortFieldName = $eventOptions['defaultSortFieldName'];$sortFieldParameterName = $this->params[$eventOptions['sortFieldParameterName']];$isFieldEqual = $defaultSortFieldName === $sortFieldParameterName;$defaultSortDirection = $eventOptions['defaultSortDirection'];$sortDirectionParameterName = $this->params[$eventOptions['sortDirectionParameterName']];$isDirectionEqual = $defaultSortDirection === $sortDirectionParameterName;if (isset($defaultSortFieldName, $sortFieldParameterName, $defaultSortDirection, $sortDirectionParameterName) && $isFieldEqual && $isDirectionEqual) {unset($this->params[$eventOptions['sortFieldParameterName']], $this->params[$eventOptions['sortDirectionParameterName']]);}}$pagination = new SlidingPagination($this->params);$pagination->setUsedRoute($this->route);$pagination->setTemplate($this->options['defaultPaginationTemplate']);$pagination->setSortableTemplate($this->options['defaultSortableTemplate']);$pagination->setFiltrationTemplate($this->options['defaultFiltrationTemplate']);$pagination->setPageRange($this->options['defaultPageRange']);$pagination->setPageLimit($this->options['defaultPageLimit']);$event->setPagination($pagination);$event->stopPropagation();}/*** @return array<string, array<int, int|string>>*/public static function getSubscribedEvents(): array{return ['knp_pager.pagination' => ['pagination', 1],];}}