From b18cdcf417be64abfc1325412e9c352d06049fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Sun, 17 Dec 2017 17:47:15 +0100 Subject: [PATCH] [Validator] Fix access to root object when using composite constraint --- .../Validator/Tests/Validator/Abstract2Dot5ApiTest.php | 3 +++ .../Validator/Validator/RecursiveContextualValidator.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Tests/Validator/Abstract2Dot5ApiTest.php b/src/Symfony/Component/Validator/Tests/Validator/Abstract2Dot5ApiTest.php index da4ef197ad..c6f41c647b 100644 --- a/src/Symfony/Component/Validator/Tests/Validator/Abstract2Dot5ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Validator/Abstract2Dot5ApiTest.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Tests\Validator; use Symfony\Component\Validator\Constraints\Callback; use Symfony\Component\Validator\Constraints\Collection; +use Symfony\Component\Validator\Constraints\Expression; use Symfony\Component\Validator\Constraints\GroupSequence; use Symfony\Component\Validator\Constraints\NotNull; use Symfony\Component\Validator\Constraints\Traverse; @@ -648,6 +649,7 @@ abstract class Abstract2Dot5ApiTest extends AbstractValidatorTest $called = false; $entity = new Entity(); $entity->firstName = 'Bernhard'; + $entity->data = array('firstName' => 'Bernhard'); $callback = function ($value, ExecutionContextInterface $context) use ($test, $entity, &$called) { $called = true; @@ -656,6 +658,7 @@ abstract class Abstract2Dot5ApiTest extends AbstractValidatorTest $this->metadata->addConstraint(new Callback($callback)); $this->metadata->addPropertyConstraint('firstName', new Callback($callback)); + $this->metadata->addPropertyConstraint('data', new Collection(array('firstName' => new Expression('value == this.firstName')))); $this->validator->validate($entity); diff --git a/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php b/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php index 00c1c4d6e4..12a38e26ec 100644 --- a/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php +++ b/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php @@ -108,7 +108,7 @@ class RecursiveContextualValidator implements ContextualValidatorInterface $this->validateGenericNode( $value, - null, + $previousObject, is_object($value) ? spl_object_hash($value) : null, $metadata, $this->defaultPropertyPath,