src/ElasticSearch/EventSubscriber/PaginatorSubscriber.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\ElasticSearch\EventSubscriber;
  3. use App\ElasticSearch\Service\ElasticSearchService;
  4. use Knp\Component\Pager\Event\ItemsEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. class PaginatorSubscriber implements EventSubscriberInterface
  7. {
  8.   public function __construct(protected ElasticSearchService $elasticSearch)
  9.   {
  10.   }
  11.   public function items(ItemsEvent $event): void
  12.   {
  13.     if (!is_array($event->target) || !array_key_exists('query'$event->target)) {
  14.       return;
  15.     }
  16.     $page = ($event->getOffset() / $event->getLimit() + 1);
  17.     $result $this->elasticSearch->search($event->target['query'], $page10);
  18.     $event->count $result['meta']['hitCount'];
  19.     $event->items $result['hits'];
  20.     $event->stopPropagation();
  21.   }
  22.   public static function getSubscribedEvents(): array
  23.   {
  24.     return [
  25.           'knp_pager.items' => ['items'1],
  26.       ];
  27.   }
  28. }