Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit be61bff

Browse filesBrowse files
committed
forward valid numeric values to transform()
1 parent bb54e40 commit be61bff
Copy full SHA for be61bff

File tree

3 files changed

+25
-2
lines changed
Filter options

3 files changed

+25
-2
lines changed

‎src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php
+7-1Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ class MoneyToLocalizedStringTransformer extends NumberToLocalizedStringTransform
2323
{
2424
private $divisor;
2525

26+
/**
27+
* @param int|null $scale
28+
* @param bool|null $grouping
29+
* @param int|null $roundingMode
30+
* @param int|null $divisor
31+
*/
2632
public function __construct($scale = 2, $grouping = true, $roundingMode = self::ROUND_HALF_UP, $divisor = 1)
2733
{
2834
if (null === $grouping) {
@@ -58,7 +64,7 @@ public function transform($value)
5864
if (!is_numeric($value)) {
5965
throw new TransformationFailedException('Expected a numeric.');
6066
}
61-
$value = (string) ($value / $this->divisor);
67+
$value /= $this->divisor;
6268
}
6369

6470
return parent::transform($value);

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface
7878

7979
private $scale;
8080

81+
/**
82+
* @param int $scale
83+
* @param bool|null $grouping
84+
* @param int|null $roundingMode
85+
*/
8186
public function __construct($scale = null, $grouping = false, $roundingMode = self::ROUND_HALF_UP)
8287
{
8388
if (null === $grouping) {

‎src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php
+13-1Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function testReverseTransformEmpty()
7373
$this->assertNull($transformer->reverseTransform(''));
7474
}
7575

76-
public function testFloatToIntConversionMismatchOnReversTransform()
76+
public function testFloatToIntConversionMismatchOnReverseTransform()
7777
{
7878
$transformer = new MoneyToLocalizedStringTransformer(null, null, null, 100);
7979
IntlTestHelper::requireFullIntl($this, false);
@@ -90,4 +90,16 @@ public function testFloatToIntConversionMismatchOnTransform()
9090

9191
$this->assertSame('10,20', $transformer->transform(1020));
9292
}
93+
94+
public function testValidNumericValuesWithNonDotDecimalPointCharacter()
95+
{
96+
// calling setlocale() here is important as it changes the representation of floats when being cast to strings
97+
setlocale(LC_ALL, 'de_DE.UTF-8');
98+
99+
$transformer = new MoneyToLocalizedStringTransformer(4, null, null, 100);
100+
IntlTestHelper::requireFullIntl($this, false);
101+
\Locale::setDefault('de_AT');
102+
103+
$this->assertSame('0,0035', $transformer->transform(12 / 34));
104+
}
93105
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.