我希望我的货币忽略小数值,到目前为止我有这个:
main.php:
'formatter' => [
'class' => 'yii\i18n\Formatter',
'thousandSeparator' => '.',
'decimalSeparator' => ',',
'currencyCode' => '€',
],
视图:
[
'attribute' => 'Score',
'format' => 'currency',
],
关于如何前进的任何想法?
答案 0 :(得分:7)
currencyCode
上的manual:
3个字母的ISO 4217货币代码,表示要使用的默认货币
尝试将currencyCode
设置为'EUR'
(虽然这似乎并不重要)并将格式化程序放在数组中
[
'attribute' => 'Score',
'format' => [
'currency',
'EUR',
[
\NumberFormatter::MIN_FRACTION_DIGITS => 0,
\NumberFormatter::MAX_FRACTION_DIGITS => 0,
]
],
],
这需要安装PHP intl扩展。可以通过调用extension_loaded('intl')
来测试扩展的状态。如果没有扩展名,最好的办法就是编写自定义格式化程序。
<?php
namespace app\components;
class Formatter extends \yii\i18n\Formatter
{
public function asRoundedCurrency($value, $currency)
{
return $this->asInteger(round($value)) . ' ' . $currency;
}
}
使用它代替默认格式化程序,然后调用它:
[
'attribute' => 'Score',
'format' => ['roundedCurrency', 'EUR'],
]
这也允许您自由设置货币符号。
答案 1 :(得分:3)
在main.php中:
'formatter' => [
'class' => 'yii\i18n\Formatter',
'locale' => 'yourLocale', //ej. 'es-ES'
'thousandSeparator' => '.',
'decimalSeparator' => ',',
'currencyCode' => 'EUR',
],
确保安装了php_intl扩展。它对我有用。
链接到文档yii-i18n-formatter。