diff --git a/src/Symfony/Component/Validator/Constraints/CollectionValidator.php b/src/Symfony/Component/Validator/Constraints/CollectionValidator.php index a56b520bd1aad..e70a79b11ee78 100644 --- a/src/Symfony/Component/Validator/Constraints/CollectionValidator.php +++ b/src/Symfony/Component/Validator/Constraints/CollectionValidator.php @@ -90,12 +90,21 @@ public function validate($value, Constraint $constraint) if (!$constraint->allowExtraFields) { foreach ($value as $field => $fieldValue) { if (!isset($constraint->fields[$field])) { - $this->buildViolationInContext($context, $constraint->extraFieldsMessage) - ->atPath('['.$field.']') - ->setParameter('{{ field }}', $this->formatValue($field)) - ->setInvalidValue($fieldValue) - ->setCode(Collection::NO_SUCH_FIELD_ERROR) - ->addViolation(); + if ($context instanceof ExecutionContextInterface) { + $context->buildViolation($constraint->extraFieldsMessage) + ->atPath('['.$field.']') + ->setParameter('{{ field }}', $this->formatValue($field)) + ->setInvalidValue($fieldValue) + ->setCode(Collection::NO_SUCH_FIELD_ERROR) + ->addViolation(); + } else { + $this->buildViolationInContext($context, $constraint->extraFieldsMessage) + ->atPath('['.$field.']') + ->setParameter('{{ field }}', $this->formatValue($field)) + ->setInvalidValue($fieldValue) + ->setCode(Collection::NO_SUCH_FIELD_ERROR) + ->addViolation(); + } } } } diff --git a/src/Symfony/Component/Validator/Tests/Mapping/MemberMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/MemberMetadataTest.php index e54e1161a28b2..c69cfbc9aa9e9 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/MemberMetadataTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/MemberMetadataTest.php @@ -35,8 +35,10 @@ protected function tearDown() $this->metadata = null; } - public function testAddValidSetsMemberToCascaded() + public function testLegacyAddValidSetsMemberToCascaded() { + $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED); + $result = $this->metadata->addConstraint(new Valid()); $this->assertEquals(array(), $this->metadata->getConstraints()); @@ -44,8 +46,10 @@ public function testAddValidSetsMemberToCascaded() $this->assertTrue($this->metadata->isCascaded()); } - public function testAddOtherConstraintDoesNotSetMemberToCascaded() + public function testLegacyAddOtherConstraintDoesNotSetMemberToCascaded() { + $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED); + $result = $this->metadata->addConstraint($constraint = new ConstraintA()); $this->assertEquals(array($constraint), $this->metadata->getConstraints());