From d19d05dc5de8616b65822139523b384c39d53dd3 Mon Sep 17 00:00:00 2001 From: Amrouche Hamza Date: Thu, 30 Nov 2017 07:23:16 +0100 Subject: [PATCH] [Serializer] add a context key to return csv always as collection --- .../Component/Serializer/Encoder/CsvEncoder.php | 4 ++++ .../Serializer/Tests/Encoder/CsvEncoderTest.php | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php index 55ae69bd93..2b4c0208f6 100644 --- a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php @@ -150,6 +150,10 @@ class CsvEncoder implements EncoderInterface, DecoderInterface } fclose($handle); + if ($context['as_collection'] ?? false) { + return $result; + } + if (empty($result) || isset($result[1])) { return $result; } diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php index a5e5c256f3..ed43fc2bfd 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php @@ -208,6 +208,22 @@ CSV , 'csv')); } + public function testDecodeOnlyOneAsCollection() + { + $this->encoder = new CsvEncoder(',', '"', '\\', '.'); + + $expected = array( + array('foo' => 'a'), + ); + + $this->assertEquals($expected, $this->encoder->decode(<<<'CSV' +foo +a + +CSV + , 'csv', array('as_collection' => true))); + } + public function testDecodeToManyRelation() { $expected = array(