Symfony kernel.controller 事件发送响应

Symfony kernel.controller event send response

就我阅读的 Symfony 文档而言,我找不到任何关于 kernel.controller 事件中的响应处理的信息。

对于 kernel.request 事件,文档说:

If a Response is returned at this stage, the process skips directly to the kernel.response event.

但是 kernel.controller 事件呢? 如果我在 kernel.controller 事件侦听器中返回响应,则响应会发送到客户端,但不会取消进程并调用请求的控制器操作。

是否可以在 kernel.controller 事件中发送响应而不继续到请求的控制器?

间接地,您可以通过更改 FilterControllerEvent 中的控制器。

您可以将任何可调用对象用作控制器,前提是它 return最终是一个 Response 对象。在您的事件侦听器中,您可以执行以下操作:

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

当然,您可以 return 在您的控制器中做出任何类型的响应。