redondeo - separar decimales php
yii2-cómo establecer el valor decimal de la moneda (2)
Quiero que mi moneda ignore el valor decimal, hasta ahora tengo esto:
main.php:
''formatter'' => [
''class'' => ''yii/i18n/Formatter'',
''thousandSeparator'' => ''.'',
''decimalSeparator'' => '','',
''currencyCode'' => ''€'',
],
ver:
[
''attribute'' => ''Score'',
''format'' => ''currency'',
],
¿Alguna idea sobre cómo avanzar?
El manual sobre currencyCode
:
El código de moneda ISO 4217 de 3 letras que indica la moneda predeterminada para usar
Intenta configurar currencyCode
en ''EUR''
(aunque eso no parece ser tan importante) y pon el formateador en una matriz
[
''attribute'' => ''Score'',
''format'' => [
''currency'',
''EUR'',
[
/NumberFormatter::MIN_FRACTION_DIGITS => 0,
/NumberFormatter::MAX_FRACTION_DIGITS => 0,
]
],
],
Esto requiere que se instale la extensión PHP intl. El estado de la extensión se puede probar llamando a extension_loaded(''intl'')
. En ausencia de la extensión, la mejor opción es escribir un formateador personalizado.
<?php
namespace app/components;
class Formatter extends /yii/i18n/Formatter
{
public function asRoundedCurrency($value, $currency)
{
return $this->asInteger(round($value)) . '' '' . $currency;
}
}
Úselo en lugar del formateador predeterminado y luego llámelo así:
[
''attribute'' => ''Score'',
''format'' => [''roundedCurrency'', ''EUR''],
]
Esto también le permite establecer libremente el símbolo de moneda.
En main.php:
''formatter'' => [
''class'' => ''yii/i18n/Formatter'',
''locale'' => ''yourLocale'', //ej. ''es-ES''
''thousandSeparator'' => ''.'',
''decimalSeparator'' => '','',
''currencyCode'' => ''EUR'',
],
Asegúrese de que las extensiones php_intl estén instaladas. Esto funciona para mi.
Enlace a la documentación yii-i18n-formateador .