2016-12-08 3 views
0

Насколько я могу прочитать документацию по Symfony, я ничего не могу найти о обработке ответа в событии kernel.controller.Ответ на событие события Symfony kernel.controller

Для kernel.request события документация говорит:

Если ответ возвращается на данном этапе, процесс скачет непосредственно к событию kernel.response.

А как насчет события kernel.controller? Если я возвращаю ответ в прослушивателе событий kernel.controller, ответ отправляется клиенту, но процесс не отменяется и вызывается запрошенное действие контроллера.

Можно ли отправить ответ в пределах kernel.controller событий, не переходя к запрашиваемому контроллеру?

ответ

0

Косвенно вы можете изменить контроллер в FilterControllerEvent.

Вы можете использовать любой вызываемый в качестве контроллера, учитывая, что он возвращает объект Response в конце. В прослушивателя событий, можно, например, сделать следующее:

$event->setController(function() { 
    return new Response(); 
}); 

Конечно, вы можете вернуть любой вид реакции в контроллере.

+0

О, хорошо, поэтому эта вызываемая функция является моим «контроллером» и возвращает ответ. Это путь? Или есть ли другая лучшая практика, чтобы избежать вызова контроллера после события kernel.controller? – Syerad

+0

Wether или нет, это путь, который зависит от вашего конкретного использования, которого я не знаю. Но это способ предотвратить выполнение контроллера по умолчанию в событии kernel.controller, помимо исключения исключения. – Gerry

+0

хорошо, спасибо @Gerry – Syerad

Смежные вопросы