yii2 — как установить десятичное значение валюты

Я хочу, чтобы моя валюта игнорировала десятичное значение, пока у меня есть это:

main.php:

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

],

Посмотреть:

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

Есть идеи о том, как двигаться вперед?

5

Решение

руководство на 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'],
]

Это также позволяет свободно устанавливать символ валюты.

7

Другие решения

В main.php:

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

],

Убедитесь, что расширения php_intl установлены. Меня устраивает.

Ссылка на документацию юй-i18n-форматировщик.

3

По вопросам рекламы [email protected]