From b5aa55dab9827fbda01230c0be1afceb9180ef52 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Mon, 6 Jul 2020 14:25:52 +0200 Subject: [PATCH] fix handling null as empty data --- .../NumberToLocalizedStringTransformer.php | 4 ++-- .../Tests/Extension/Core/Type/NumberTypeTest.php | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php index a480b8312b..986458bbff 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php +++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php @@ -143,11 +143,11 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface */ public function reverseTransform($value) { - if (!\is_string($value)) { + if (null !== $value && !\is_string($value)) { throw new TransformationFailedException('Expected a string.'); } - if ('' === $value) { + if (null === $value || '' === $value) { return null; } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php index 9cc2893c66..8246fdaef7 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/NumberTypeTest.php @@ -85,4 +85,19 @@ class NumberTypeTest extends BaseTypeTest $this->assertSame($expectedData, $form->getNormData()); $this->assertSame($expectedData, $form->getData()); } + + public function testSubmitNullWithEmptyDataSetToNull() + { + $form = $this->factory->create(static::TESTED_TYPE, null, [ + 'empty_data' => null, + ]); + $form->submit(null); + + $this->assertTrue($form->isSubmitted()); + $this->assertTrue($form->isSynchronized()); + $this->assertTrue($form->isValid()); + $this->assertSame('', $form->getViewData()); + $this->assertNull($form->getNormData()); + $this->assertNull($form->getData()); + } }