Я хочу, чтобы моя валюта игнорировала десятичное значение, пока у меня есть это:
main.php:
'formatter' => [
'class' => 'yii\i18n\Formatter',
'thousandSeparator' => '.',
'decimalSeparator' => ',',
'currencyCode' => '€',
],
Посмотреть:
[
'attribute' => 'Score',
'format' => 'currency',
],
Есть идеи о том, как двигаться вперед?
руководство на currencyCode
:
Трехбуквенный код валюты 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 установлены. Меня устраивает.
Ссылка на документацию юй-i18n-форматировщик.