From 4ff9d99f23fa4b8061983a93d1937d8ad05aa682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 4 Dec 2017 17:28:00 +0100 Subject: [PATCH] [Serializer] Unset attributes when creating child context --- .../Serializer/Normalizer/AbstractNormalizer.php | 2 ++ .../Tests/Normalizer/ObjectNormalizerTest.php | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index c1e621fe90..c8b9bdac7d 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -402,6 +402,8 @@ abstract class AbstractNormalizer extends SerializerAwareNormalizer implements N { if (isset($parentContext[self::ATTRIBUTES][$attribute])) { $parentContext[self::ATTRIBUTES] = $parentContext[self::ATTRIBUTES][$attribute]; + } else { + unset($parentContext[self::ATTRIBUTES]); } return $parentContext; diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php index 9407fdf52d..b8a628f0f8 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php @@ -673,6 +673,16 @@ class ObjectNormalizerTest extends TestCase ), $serializer->normalize($objectDummy, null, $context) ); + + $context = array('attributes' => array('foo', 'baz', 'object')); + $this->assertEquals( + array( + 'foo' => 'foo', + 'baz' => true, + 'object' => array('foo' => 'innerFoo', 'bar' => 'innerBar'), + ), + $serializer->normalize($objectDummy, null, $context) + ); } public function testAttributesContextDenormalize()