0
我有以下问题。我使用Symfony Forms来验证JSON请求,这也很棒。但我也会以更多的Json可读的方式抛出错误。Symfony窗体错误呈现
是否有可能从FormErrorIterator FormError获取每个错误的相关字段名称。
例如:
formName.SubForm.Propertyname => 'MyErrorMessage'
路径的结构可以是也数组。
我有以下问题。我使用Symfony Forms来验证JSON请求,这也很棒。但我也会以更多的Json可读的方式抛出错误。Symfony窗体错误呈现
是否有可能从FormErrorIterator FormError获取每个错误的相关字段名称。
例如:
formName.SubForm.Propertyname => 'MyErrorMessage'
路径的结构可以是也数组。
如果你想获取一个数组的形式的错误,你可以添加在你的控制器使用方法:
private function getErrorMessages(\Symfony\Component\Form\Form $form) {
$errors = array();
foreach ($form->getErrors() as $key => $error) {
if ($form->isRoot()) {
$errors['#'][] = $error->getMessage();
} else {
$errors[] = $error->getMessage();
}
}
foreach ($form->all() as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = $this->getErrorMessages($child);
}
}
return $errors;
}
$错误将包含错误的数组,如果一个字段有错误字段名称将用作数组中的键:
$ errors ['FIELD_NAME'] = ERROR_MSG。
根据您的Symfony版本,您可能需要或想要此方法的其他版本:Symfony2 : How to get form validation errors after binding the request to the form。
UPDATE
如果您validation constraints是对实体类的字段,他们将是错误的阵列基于字段名的键英寸
如果您的验证约束条件在实体类上,则它将在#键或数字键中,具体取决于表单是否为根。
实体类的例子
/**
* @Assert\Callback("isValidName") <- this error will be in $errors['#']
*/
class Author
{
/**
* @Assert\NotBlank() <- this error will be in $errors['firstname']
*/
public $firstname;
}
如果您想对字段仅错误,你需要将所有的实体领域的实体类断言。
这似乎更多的评论。您需要向提问者询问是否要从参考链接中提取更具体(且有用)的答案,以便在此处进行报告。 – 2015-03-13 18:30:12
我已经更新了关于您的评论的答案,它应该更准确。 – HypeR 2015-03-13 19:29:45
干得好,现在它是一个答案:-)。 – 2015-03-13 19:43:49