vendor/knplabs/knp-components/src/Knp/Component/Pager/Event/Subscriber/Paginate/ArraySubscriber.php line 11

Open in your IDE?
  1. <?php
  2. namespace Knp\Component\Pager\Event\Subscriber\Paginate;
  3. use ArrayObject;
  4. use Knp\Component\Pager\Event\ItemsEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. class ArraySubscriber implements EventSubscriberInterface
  7. {
  8.     public function items(ItemsEvent $event): void
  9.     {
  10.         if (is_array($event->target)) {
  11.             $event->count count($event->target);
  12.             $event->items array_slice(
  13.                 $event->target,
  14.                 $event->getOffset(),
  15.                 $event->getLimit()
  16.             );
  17.             $event->stopPropagation();
  18.         } elseif ($event->target instanceof ArrayObject) {
  19.             $event->count $event->target->count();
  20.             $event->items = new ArrayObject(array_slice(
  21.                 $event->target->getArrayCopy(),
  22.                 $event->getOffset(),
  23.                 $event->getLimit()
  24.             ));
  25.             $event->stopPropagation();
  26.         }
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             'knp_pager.items' => ['items', -1/* other data arrays should be analized first*/]
  32.         ];
  33.     }
  34. }