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()); + } }