通过事件监听器在服务中间返回响应

时间:2018-12-12 17:09:13

标签: php symfony event-handling

如何通过事件监听器在服务中间返回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);

哪个会立即返回响应?

0 个答案:

没有答案