*/ class SolariumQuerySubscriber implements EventSubscriberInterface { public function items(ItemsEvent $event): void { if (is_array($event->target) && 2 === count($event->target)) { $values = array_values($event->target); [$client, $query] = $values; if ($client instanceof Client && $query instanceof Query) { $query->setStart($event->getOffset())->setRows($event->getLimit()); $solrResult = $client->select($query); $event->items = iterator_to_array($solrResult->getIterator()); $event->count = $solrResult->getNumFound(); $event->setCustomPaginationParameter('result', $solrResult); $event->stopPropagation(); } } } public static function getSubscribedEvents(): array { return [ 'knp_pager.items' => ['items', 0], /* triggers before a standard array subscriber*/ ]; } }