diff --git a/src/Symfony/Component/Validator/Constraints/AtLeastOneOfValidator.php b/src/Symfony/Component/Validator/Constraints/AtLeastOneOfValidator.php index acdd31117af84..caed1d1d59322 100644 --- a/src/Symfony/Component/Validator/Constraints/AtLeastOneOfValidator.php +++ b/src/Symfony/Component/Validator/Constraints/AtLeastOneOfValidator.php @@ -34,7 +34,7 @@ public function validate($value, Constraint $constraint) $messages = [$constraint->message]; foreach ($constraint->constraints as $key => $item) { - $violations = $validator->validate($value, $item); + $violations = $validator->validate($value, $item, $this->context->getGroup()); if (0 === \count($violations)) { return; diff --git a/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfValidatorTest.php index 2870781780117..f05d05e047017 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/AtLeastOneOfValidatorTest.php @@ -28,6 +28,7 @@ use Symfony\Component\Validator\Constraints\Regex; use Symfony\Component\Validator\Constraints\Unique; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; +use Symfony\Component\Validator\Validation; /** * @author Przemysław Bogusz @@ -160,4 +161,27 @@ public function getInvalidCombinations() ]], ]; } + + public function testGroupsArePropagatedToNestedConstraints() + { + $validator = Validation::createValidator(); + + $violations = $validator->validate(50, new AtLeastOneOf([ + 'constraints' => [ + new Range([ + 'groups' => 'non_default_group', + 'min' => 10, + 'max' => 20, + ]), + new Range([ + 'groups' => 'non_default_group', + 'min' => 30, + 'max' => 40, + ]), + ], + 'groups' => 'non_default_group', + ]), 'non_default_group'); + + $this->assertCount(1, $violations); + } }