From 5c27d7e07853fe9044c0b69de34e2ff221ef472c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20L=C3=A9v=C3=AAque?= Date: Wed, 3 Jul 2013 15:43:12 +0200 Subject: [PATCH] [Serializer] Add the missing context support inside the XmlEncoder --- src/Symfony/Component/Serializer/CHANGELOG.md | 5 +++++ src/Symfony/Component/Serializer/Encoder/XmlEncoder.php | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Serializer/CHANGELOG.md b/src/Symfony/Component/Serializer/CHANGELOG.md index 5a332da390bb..5b859623fef0 100644 --- a/src/Symfony/Component/Serializer/CHANGELOG.md +++ b/src/Symfony/Component/Serializer/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +2.4.0 +----- + + * added `$context` support for XMLEncoder. + 2.3.0 ----- diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index 137f2fc3272d..75d0da466f9a 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -24,6 +24,7 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec { private $dom; private $format; + private $context; private $rootNodeName = 'response'; /** @@ -49,6 +50,7 @@ public function encode($data, $format, array $context = array()) $this->dom = new \DOMDocument(); $this->format = $format; + $this->context = $context; if (null !== $data && !is_scalar($data)) { $root = $this->dom->createElement($xmlRootNodeName); @@ -325,7 +327,7 @@ private function buildXml($parentNode, $data, $xmlRootNodeName = null) } if (is_object($data)) { - $data = $this->serializer->normalize($data, $this->format); + $data = $this->serializer->normalize($data, $this->format, $this->context); if (null !== $data && !is_scalar($data)) { return $this->buildXml($parentNode, $data, $xmlRootNodeName); } @@ -399,7 +401,7 @@ private function selectNodeType($node, $val) } elseif ($val instanceof \Traversable) { $this->buildXml($node, $val); } elseif (is_object($val)) { - return $this->buildXml($node, $this->serializer->normalize($val, $this->format)); + return $this->buildXml($node, $this->serializer->normalize($val, $this->format, $this->context)); } elseif (is_numeric($val)) { return $this->appendText($node, (string) $val); } elseif (is_string($val) && $this->needsCdataWrapping($val)) {