Событие ResponseEvent
Событие ResponseEvent относится к жизненному циклу ядра Symfony (Kernel).
Оно возникает в момент, когда контроллер уже вернул объект ответа,
но этот ответ ещё не был отправлен клиенту. Это событие даёт возможность
изменить заголовки, содержимое или статус ответа. Первым параметром
в конструктор передаётся объект HttpKernelInterface,
вторым - объект Request, а третьим - объект Response.
Синтаксис
use Symfony\Component\HttpKernel\Event\ResponseEvent;
public function __construct(
HttpKernelInterface $kernel,
Request $request,
Response $response
)
Пример
Давайте создадим слушателя, который добавляет заголовок к каждому ответу:
<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
class ResponseListener
{
public function onKernelResponse(ResponseEvent $event): void
{
$response = $event->getResponse();
$response->headers->set('X-Custom-Header', 'abcde');
}
}
?>
Теперь зарегистрируем этого слушателя в конфигурации:
services:
App\EventListener\ResponseListener:
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
Результат выполнения кода (заголовки ответа):
X-Custom-Header: abcde
Пример
Давайте изменим содержимое ответа, если запрос является главным:
<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
class ResponseListener
{
public function onKernelResponse(ResponseEvent $event): void
{
if (!$event->isMainRequest()) {
return;
}
$response = $event->getResponse();
$response->setContent('hello');
}
}
?>
Результат выполнения кода:
hello
Смотрите также
-
метод
getResponse,
который возвращает объект ответа -
метод
setResponse,
который заменяет объект ответа -
метод
isMainRequest,
который проверяет, является ли запрос главным -
событие
RequestEvent,
которое возникает при получении запроса