我有一项帮助我验证某些表单的服务。我想在发现表单实际上无效时从其内部设置HTTP状态代码。
这样做可以吗?我该怎么做?谢谢!
答案 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);
}
}
通过这种方式,您可以获得很好的解耦,并且您的表单验证服务与响应无关。