如何通过事件监听器在服务中间返回Response?
我遇到的情况是,我有两个控制器,一个用于前端,一个用于API。他们两个都使用相同的服务来处理请求。在handle
方法中的此服务中,我有几个地方要在方法执行整个代码之前返回响应。我的意思是我检查了一些需求,验证了一些东西等。因此,在那些地方我可以调度一个事件来处理创建响应。因此,API获得JSON响应,而前端将呈现一个视图。但是如何返回此响应?我可以像这样将事件的响应返回到控制器:
//src/Manager/MyService.php
public function handle(EventDispatcherInterface $eventDispatcher, $input) {
//...
$eventDispatcher->dispatch('event.error', $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
}
控制器将如下所示:
public function doSomething(MyService $service)
{
//...
return $service->handle($input);
}
这将完成工作。但是有更快的方法吗?是否可以做这样的事情:
$eventDispatcher->dispatch('event.error', $event);
哪个会立即返回响应?