РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1006 of 1361 menu

Событие 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,
    которое возникает при получении запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить