src/EventListener/AddPaginationHeaders.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use ApiPlatform\Core\Bridge\Doctrine\Orm\Paginator;
  4. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  5. final class AddPaginationHeaders
  6. {
  7.     public function addHeaders(ResponseEvent $event): void
  8.     {
  9.         $request $event->getRequest();
  10.         if (($data $request->attributes->get('data')) && $data instanceof Paginator && in_array('application/json'$request->getAcceptableContentTypes())) {
  11.             $response $event->getResponse();
  12.             if( $data->getTotalItems() > ) {
  13.                 $headers = [
  14.                     'x-current-page' => intval($data->getCurrentPage()),
  15.                     'x-total-items' => intval($data->getTotalItems()),
  16.                     'x-items-per-page' => intval($data->getItemsPerPage()),
  17.                     'x-last-page' => intval($data->getLastPage()),
  18.                     'x-items' => $data->count(),
  19.                 ];
  20.                 if ( $data->getCurrentPage() < $data->getLastPage() ) {
  21.                     $headers['x-next-page'] = intval($data->getCurrentPage() + 1);
  22.                 }
  23.             } else {
  24.                 $headers = [
  25.                     'x-total-items' => 0,
  26.                     'x-items' => 0,
  27.                 ];
  28.             }
  29.             $response->headers->add($headers);
  30.         }
  31.     }
  32. }