Skip to content

Commit 56d3c26

Browse files
committed
bug #18358 [Form] NumberToLocalizedStringTransformer should return floats when possible (nicolas-grekas)
This PR was merged into the 2.3 branch. Discussion ---------- [Form] NumberToLocalizedStringTransformer should return floats when possible | Q | A | ------------- | --- | Branch? | 2.3 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #18346 | License | MIT | Doc PR | - Commits ------- f5ed09c [Form] NumberToLocalizedStringTransformer should return floats when possible
2 parents 39b1642 + f5ed09c commit 56d3c26

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ public function reverseTransform($value)
140140
throw new TransformationFailedException('I don\'t have a clear idea what infinity looks like');
141141
}
142142

143+
if (is_int($result) && $result === (int) $float = (float) $result) {
144+
$result = $float;
145+
}
146+
143147
if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($value, null, true)) {
144148
$length = mb_strlen($value, $encoding);
145149
$remainder = mb_substr($value, $position, $length, $encoding);

src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,17 @@ public function testReverseTransformDisallowsTrailingExtraCharactersMultibyte()
434434
$transformer->reverseTransform("12\xc2\xa0345,678foo");
435435
}
436436

437-
public function testReverseTransformBigint()
437+
public function testReverseTransformBigInt()
438438
{
439439
$transformer = new NumberToLocalizedStringTransformer(null, true);
440440

441441
$this->assertEquals(PHP_INT_MAX - 1, (int) $transformer->reverseTransform((string) (PHP_INT_MAX - 1)));
442442
}
443+
444+
public function testReverseTransformSmallInt()
445+
{
446+
$transformer = new NumberToLocalizedStringTransformer(null, true);
447+
448+
$this->assertSame(1.0, $transformer->reverseTransform('1'));
449+
}
443450
}

0 commit comments

Comments
 (0)