src/EventListener/PaginationSubscriber.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use ApiPlatform\State\Pagination\PaginatorInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. class PaginationSubscriber implements EventSubscriberInterface
  9. {
  10.     public static function getSubscribedEvents()
  11.     {
  12.         return [
  13.             KernelEvents::RESPONSE => ['addPaginationHeaders'],
  14.         ];
  15.     }
  16.     public function addPaginationHeaders(ResponseEvent $event): void
  17.     {
  18.         $method $event->getRequest()->getMethod();
  19.         if ($method !== Request::METHOD_GET) {
  20.             return;
  21.         }
  22.         if (($data $event->getRequest()->attributes->get('data')) && $data instanceof PaginatorInterface) {
  23.             $headers = [
  24.                 'x-pagination-current' => $data->getCurrentPage(),
  25.                 'x-pagination-page-size' => $data->getItemsPerPage(),
  26.                 'x-pagination-total' => $data->getTotalItems(),
  27.             ];
  28.             $responseHeaders $event->getResponse()->headers;
  29.             foreach ($headers as $header => $value) {
  30.                 $responseHeaders->set($header$value);
  31.             }
  32.         }
  33.     }
  34. }