Я хочу, чтобы моя валюта игнорировала десятичное значение, до сих пор у меня это:
main.php:
'formatter' => [ 'class' => 'yii\i18n\Formatter', 'thousandSeparator' => '.', 'decimalSeparator' => ',', 'currencyCode' => '€', ],
Посмотреть:
[ 'attribute' => 'Score', 'format' => 'currency', ],
Любая идея о том, как двигаться вперед?
Руководство по 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'], ]
Это также позволяет вам свободно устанавливать символ валюты.
В main.php:
'formatter' => [ 'class' => 'yii\i18n\Formatter', 'locale' => 'yourLocale', //ej. 'es-ES' 'thousandSeparator' => '.', 'decimalSeparator' => ',', 'currencyCode' => 'EUR', ],
Убедитесь, что установлены расширения php_intl. Меня устраивает.
Ссылка на документацию yii-i18n-formatter .