我正在使用Symfony2表单来验证对API的POST和PUT请求.表单处理将请求数据绑定到底层实体,然后验证实体.除收集错误外,一切都很顺利.我正在使用FOSRestBundle并抛出一个Symfony\Component\HttpKernel\Exception\HttpException,其中包含400状态代码和一条包含表单错误消息的消息,如果验证失败.FOSRestBundle处理将其转换为JSON响应.我必须执行所有这些的控制器方法如下所示(所有字段将其错误冒充到表单):
protected function validateEntity(AbstractType $type, $entity, Request $request)
{
$form = $this->createForm($type, $entity);
$form->bind($request);
if (! $form->isValid()) {
$message = ['Invalid parameters passed.'];
foreach ($form->getErrors() as $error) {
$message[] = $error->getMessage();
}
throw new HttpException(Codes::HTTP_BAD_REQUEST, implode("\n", $message));
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我通过$ form-> getErrors()收集表单级错误时,我只能访问错误消息而不是错误连接到的字段的名称.当POST或PUT参数对应于相关实体的id时,这是一个特殊问题.如果提交的值无效,则该错误消息只是"此值无效",在此上下文中不是很好.理想情况下,我想做以下任何一种情况: