<?php
namespace App\EventSubscriber;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Paginator;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ApiPlatformPaginationHeaderEventSubscriber implements EventSubscriberInterface
{
public function addHeaders(ResponseEvent $event): void
{
$request = $event->getRequest();
if (($data = $request->attributes->get('data')) && $data instanceof Paginator) {
$response = $event->getResponse();
$response->headers->add([
'Pagination-Count' => $data->getTotalItems(),
'Pagination-Page' => $data->getCurrentPage(),
'Pagination-PerPage' => $data->getItemsPerPage()
]);
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'addHeaders',
];
}
}