如何在Symfony 2中设置服务层的状态代码?

时间:2014-05-29 19:57:07

标签: symfony response http-status-codes

我有一项帮助我验证某些表单的服务。我想在发现表单实际上无效时从其内部设置HTTP状态代码。

这样做可以吗?我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:2)

我这样做的方式(可能还有更多解决方案)是在您的服务中抛出一些(自定义)异常,以防您的表单无效。

然后我会创建一个exception listener来监听内核异常事件。这种监听器的配置看起来像这样(services.yml

kernel.listener.your_listener:
    class: Acme\Your\Namespace\YourExceptionListener
    tags:
        - { name: kernel.event_listener, event: kernel.exception, method: onException } 

而不是onException课程中的YourExceptionListener方法:

public function onException(GetResponseForExceptionEvent $event)
{
    $exception = $event->getException();
    if ($exception instanceof YourCustomExceptionInterface) {
        $response = new Response('', 400);
        $event->setResponse($response);
    }
}

通过这种方式,您可以获得很好的解耦,并且您的表单验证服务与响应无关。