7

我希望我的货币忽略十进制值,到目前为止我有这个:

主.php:

'formatter' => [
   'class' => 'yii\i18n\Formatter',
   'thousandSeparator' => '.',
   'decimalSeparator' => ',',
   'currencyCode' => '€',

],

看法:

[
   'attribute' => 'Score',
   'format' => 'currency',
],

关于如何前进的任何想法?

4

2 回答 2

10

手册currencyCode:_ _

指示要使用的默认货币的 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'],
]

这也允许您自由设置货币符号。

于 2015-07-31T10:40:56.290 回答
3

在 main.php 中:

'formatter' => [
   'class' => 'yii\i18n\Formatter',
   'locale' => 'yourLocale', //ej. 'es-ES'
   'thousandSeparator' => '.',
   'decimalSeparator' => ',',
   'currencyCode' => 'EUR',

],

确保安装了 php_intl 扩展。这个对我有用。

链接到文档yii-i18n-formatter

于 2016-03-22T15:41:10.677 回答