From 9a60057f42fa72094c973b779cd2b88523813cb8 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 6 Jan 2017 14:26:32 +0100 Subject: [PATCH] respect groups when merging constraints --- src/Symfony/Component/Validator/Mapping/ClassMetadata.php | 5 ++++- .../Validator/Tests/Mapping/ClassMetadataTest.php | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php index a079454c7051..dc825e1fa9c2 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 953897716754..99b15aa9a4cc 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');