I\'m using Symfony2 forms to validate POST and PUT requests to an API. The form handles binding the request data to the underlying entity and then validating the entity. Eve
For Symfony 4.x+ (may working with lower versions).
// $form = $this->createForm(SomeType::class);
// $form->submit($data);
// if (!$form->isValid()) {
// var_dump($this->getErrorsFromForm($form));
// }
private function getErrorsFromForm(FormInterface $form, bool $child = false): array
{
$errors = [];
foreach ($form->getErrors() as $error) {
if ($child) {
$errors[] = $error->getMessage();
} else {
$errors[$error->getOrigin()->getName()][] = $error->getMessage();
}
}
foreach ($form->all() as $childForm) {
if ($childForm instanceof FormInterface) {
if ($childErrors = $this->getErrorsFromForm($childForm, true)) {
$errors[$childForm->getName()] = $childErrors;
}
}
}
return $errors;
}