src/EventSubscriber/AddPaginationHeaders.php line 15

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber;
  4. use ApiPlatform\Core\Bridge\Doctrine\Orm\Paginator;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. final class AddPaginationHeaders implements EventSubscriberInterface
  10. {
  11.     public function addHeaders(ResponseEvent $event): void
  12.     {
  13.         $request $event->getRequest();
  14.         if (($data $request->attributes->get('data')) && $data instanceof Paginator) {
  15.             $response $event->getResponse();
  16.             $response->headers->add([
  17.                 'X-Pages' => $data->getLastPage(),
  18.                 'X-Page' => $data->getCurrentPage(),
  19.                 'X-Total' => $data->getTotalItems(),
  20.             ]);
  21.         }
  22.     }
  23.     /**
  24.      * {@inheritdoc}
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             KernelEvents::RESPONSE => 'addHeaders',
  30.         ];
  31.     }
  32. }