Skip to content

Commit

Permalink
[Form] fixed validation when using the 'validation_constraint' option
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Jul 15, 2011
1 parent 5182a0c commit af67e65
Showing 1 changed file with 23 additions and 4 deletions.
Expand Up @@ -18,6 +18,7 @@
use Symfony\Component\Form\Exception\FormException;
use Symfony\Component\Validator\ValidatorInterface;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Form\Util\PropertyPath;

class DelegatingValidator implements FormValidatorInterface
{
Expand Down Expand Up @@ -53,11 +54,29 @@ public function validate(FormInterface $form)
$form->getAttribute('validation_constraint'),
self::getFormValidationGroups($form)
);
} else {
$violations = $this->validator->validate($form);
}

if ($violations) {
if ($violations) {
foreach ($violations as $violation) {
$propertyPath = new PropertyPath($violation->getPropertyPath());
$template = $violation->getMessageTemplate();
$parameters = $violation->getMessageParameters();
$error = new FormError($template, $parameters);

$child = $form;
foreach ($propertyPath->getElements() as $element) {
$children = $child->getChildren();
if (!isset($children[$element])) {
$form->addError($error);
break;
}

$child = $children[$element];
}

$child->addError($error);
}
}
} elseif ($violations = $this->validator->validate($form)) {
foreach ($violations as $violation) {
$propertyPath = $violation->getPropertyPath();
$template = $violation->getMessageTemplate();
Expand Down

0 comments on commit af67e65

Please sign in to comment.