diff --git a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php index a079454c70519..dc825e1fa9c2f 100644 --- a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php @@ -354,7 +354,10 @@ public function mergeConstraints(ClassMetadata $source) $member = clone $member; foreach ($member->getConstraints() as $constraint) { - $member->constraintsByGroup[$this->getDefaultGroup()][] = $constraint; + if (in_array($constraint::DEFAULT_GROUP, $constraint->groups, true)) { + $member->constraintsByGroup[$this->getDefaultGroup()][] = $constraint; + } + $constraint->addImplicitGroupName($this->getDefaultGroup()); } diff --git a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php index 9538977167546..99b15aa9a4cc8 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php @@ -135,6 +135,7 @@ public function testMergeConstraintsMergesMemberConstraints() { $parent = new ClassMetadata(self::PARENTCLASS); $parent->addPropertyConstraint('firstName', new ConstraintA()); + $parent->addPropertyConstraint('firstName', new ConstraintB(array('groups' => 'foo'))); $this->metadata->mergeConstraints($parent); $this->metadata->addPropertyConstraint('firstName', new ConstraintA()); @@ -148,9 +149,13 @@ public function testMergeConstraintsMergesMemberConstraints() 'Default', 'Entity', ))); + $constraintB = new ConstraintB(array( + 'groups' => array('foo'), + )); $constraints = array( $constraintA1, + $constraintB, $constraintA2, ); @@ -166,6 +171,9 @@ public function testMergeConstraintsMergesMemberConstraints() $constraintA1, $constraintA2, ), + 'foo' => array( + $constraintB, + ), ); $members = $this->metadata->getPropertyMetadata('firstName');