我使用以下代码来获取表单中的所有错误:
// get all the errors in the form in an array
public static function getErrorMessages(\Symfony\Component\Form\Form $form) {
$errors = array();
// actual errors
foreach ($form->getErrors() as $key => $error) {
$errors[] = $error->getMessage();
}
// find children that are not valid
if ($form->count()>0) {
foreach ($form->all() as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = formHelper::getErrorMessages($child);
}
}
}
有效。唯一的问题是FOSUser:我已经定义了我的验证组,并且错误没有被翻译。而不是得到"密码太短"我得到" fos_user.password.short"。问题在于:
$errors[] = $error->getMessage();
这不会转换错误。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
您应该使用翻译服务来翻译消息 试试这个:
public function getFormErrorsAssoc(FormInterface $form) {
$errors = array();
/* @var \Symfony\Component\Form\FormError $error*/
foreach ($form->getErrors() as $key => $error) {
$message = $this->translator->trans($error->getMessageTemplate(), $error->getMessageParameters(), 'validators');
if ($message) {
$errors[$key] = $message;
}
}
if ($form->hasChildren()) {
/* @var FormInterface $child*/
foreach ($form->getChildren() as $child) {
$label = $child->getAttribute('label') ? : $child->getName();
if (!$child->isValid()) {
$errors[$label] = $this->getFormErrorsAssoc($child);
}
}
}
return $errors;
}