vendor/knplabs/knp-components/src/Knp/Component/Pager/Event/Subscriber/Sortable/SortableSubscriber.php line 15

Open in your IDE?
  1. <?php
  2. namespace Knp\Component\Pager\Event\Subscriber\Sortable;
  3. use Knp\Component\Pager\Event\BeforeEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. class SortableSubscriber implements EventSubscriberInterface
  6. {
  7. /**
  8. * Lazy-load state tracker
  9. */
  10. private bool $isLoaded = false;
  11. public function before(BeforeEvent $event): void
  12. {
  13. // Do not lazy-load more than once
  14. if ($this->isLoaded) {
  15. return;
  16. }
  17. /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher */
  18. $dispatcher = $event->getEventDispatcher();
  19. // hook all standard sortable subscribers
  20. $request = $event->getRequest();
  21. $dispatcher->addSubscriber(new Doctrine\ORM\QuerySubscriber($request));
  22. $dispatcher->addSubscriber(new Doctrine\ODM\MongoDB\QuerySubscriber($request));
  23. $dispatcher->addSubscriber(new ElasticaQuerySubscriber($request));
  24. $dispatcher->addSubscriber(new PropelQuerySubscriber($request));
  25. $dispatcher->addSubscriber(new SolariumQuerySubscriber($request));
  26. $dispatcher->addSubscriber(new ArraySubscriber($request));
  27. $this->isLoaded = true;
  28. }
  29. public static function getSubscribedEvents(): array
  30. {
  31. return [
  32. 'knp_pager.before' => ['before', 1],
  33. ];
  34. }
  35. }