mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-12 03:30:12 +08:00
ensure some BC
ensure some features that were recently added to formatter keep working after refactoring
This commit is contained in:
@@ -145,6 +145,7 @@ class Formatter extends Component
|
|||||||
public $numberFormatterTextOptions = [];
|
public $numberFormatterTextOptions = [];
|
||||||
/**
|
/**
|
||||||
* @var string the 3-letter ISO 4217 currency code indicating the default currency to use for [[asCurrency]].
|
* @var string the 3-letter ISO 4217 currency code indicating the default currency to use for [[asCurrency]].
|
||||||
|
* If not set, the currency code corresponding to [[locale]] will be used.
|
||||||
*/
|
*/
|
||||||
public $currencyCode;
|
public $currencyCode;
|
||||||
/**
|
/**
|
||||||
@@ -987,6 +988,7 @@ class Formatter extends Component
|
|||||||
*
|
*
|
||||||
* @param mixed $value the value to be formatted.
|
* @param mixed $value the value to be formatted.
|
||||||
* @param string $currency the 3-letter ISO 4217 currency code indicating the currency to use.
|
* @param string $currency the 3-letter ISO 4217 currency code indicating the currency to use.
|
||||||
|
* If null, [[currencyCode]] will be used.
|
||||||
* @param array $options optional configuration for the number formatter. This parameter will be merged with [[numberFormatterOptions]].
|
* @param array $options optional configuration for the number formatter. This parameter will be merged with [[numberFormatterOptions]].
|
||||||
* @param array $textOptions optional configuration for the number formatter. This parameter will be merged with [[numberFormatterTextOptions]].
|
* @param array $textOptions optional configuration for the number formatter. This parameter will be merged with [[numberFormatterTextOptions]].
|
||||||
* @return string the formatted result.
|
* @return string the formatted result.
|
||||||
@@ -1000,16 +1002,23 @@ class Formatter extends Component
|
|||||||
}
|
}
|
||||||
$value = $this->normalizeNumericValue($value);
|
$value = $this->normalizeNumericValue($value);
|
||||||
|
|
||||||
|
if ($this->_intlLoaded) {
|
||||||
|
$formatter = $this->createNumberFormatter(NumberFormatter::CURRENCY, null, $options, $textOptions);
|
||||||
|
if ($currency === null) {
|
||||||
|
if ($this->currencyCode === null) {
|
||||||
|
$currency = $formatter->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL);
|
||||||
|
} else {
|
||||||
|
$currency = $this->currencyCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $formatter->formatCurrency($value, $currency);
|
||||||
|
} else {
|
||||||
if ($currency === null) {
|
if ($currency === null) {
|
||||||
if ($this->currencyCode === null) {
|
if ($this->currencyCode === null) {
|
||||||
throw new InvalidConfigException('The default currency code for the formatter is not defined.');
|
throw new InvalidConfigException('The default currency code for the formatter is not defined.');
|
||||||
}
|
}
|
||||||
$currency = $this->currencyCode;
|
$currency = $this->currencyCode;
|
||||||
}
|
}
|
||||||
if ($this->_intlLoaded) {
|
|
||||||
$formatter = $this->createNumberFormatter(NumberFormatter::CURRENCY, null, $options, $textOptions);
|
|
||||||
return $formatter->formatCurrency($value, $currency);
|
|
||||||
} else {
|
|
||||||
return $currency . ' ' . $this->asDecimal($value, 2, $options, $textOptions);
|
return $currency . ' ' . $this->asDecimal($value, 2, $options, $textOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -546,7 +546,12 @@ class FormatterTest extends TestCase
|
|||||||
|
|
||||||
public function testIntlAsCurrency()
|
public function testIntlAsCurrency()
|
||||||
{
|
{
|
||||||
$this->formatter->locale = 'en_US';
|
$this->formatter->locale = 'en-US';
|
||||||
|
$this->assertSame('$123.00', $this->formatter->asCurrency('123'));
|
||||||
|
$this->assertSame('$123,456.00', $this->formatter->asCurrency('123456'));
|
||||||
|
$this->assertSame('$0.00', $this->formatter->asCurrency('0'));
|
||||||
|
|
||||||
|
$this->formatter->locale = 'en-US';
|
||||||
$this->formatter->currencyCode = 'USD';
|
$this->formatter->currencyCode = 'USD';
|
||||||
$this->assertSame('$123.00', $this->formatter->asCurrency('123'));
|
$this->assertSame('$123.00', $this->formatter->asCurrency('123'));
|
||||||
$this->assertSame('$123,456.00', $this->formatter->asCurrency('123456'));
|
$this->assertSame('$123,456.00', $this->formatter->asCurrency('123456'));
|
||||||
@@ -556,7 +561,9 @@ class FormatterTest extends TestCase
|
|||||||
// $value = '-123456.123';
|
// $value = '-123456.123';
|
||||||
// $this->assertSame("($123,456.12)", $this->formatter->asCurrency($value));
|
// $this->assertSame("($123,456.12)", $this->formatter->asCurrency($value));
|
||||||
|
|
||||||
$this->formatter->locale = 'de_DE';
|
$this->formatter->locale = 'de-DE';
|
||||||
|
$this->formatter->currencyCode = null;
|
||||||
|
$this->assertSame('123,00 €', $this->formatter->asCurrency('123'));
|
||||||
$this->formatter->currencyCode = 'USD';
|
$this->formatter->currencyCode = 'USD';
|
||||||
$this->assertSame('123,00 $', $this->formatter->asCurrency('123'));
|
$this->assertSame('123,00 $', $this->formatter->asCurrency('123'));
|
||||||
$this->formatter->currencyCode = 'EUR';
|
$this->formatter->currencyCode = 'EUR';
|
||||||
|
|||||||
Reference in New Issue
Block a user