2015-07-31 8 views
5

voglio che la mia moneta di ignorare valore decimale, finora ho questo:yii2 - come impostare moneta valore decimale

main.php:

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

], 

vista:

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

Qualche idea su come andare avanti?

+0

Interesse: sei stato in grado di risolvere questo? – tarleb

risposta

7

La manual su currencyCode:

Il 3 lettere ISO 4217 codice valuta che indica la valuta di default da usare

provare a impostare currencyCode a 'EUR' (anche se questo non sembra essere il fatto che importante) e inserire il formattatore in un array

[ 
    'attribute' => 'Score', 
    'format' => [ 
     'currency', 
     'EUR', 
     [ 
      \NumberFormatter::MIN_FRACTION_DIGITS => 0, 
      \NumberFormatter::MAX_FRACTION_DIGITS => 0, 
     ] 
    ], 
], 

Questo richiede s l'estensione intl di PHP da installare. Lo stato dell'estensione può essere verificato chiamando lo extension_loaded('intl'). In assenza dell'estensione, la soluzione migliore è probabilmente scrivere un formattatore personalizzato.

<?php 
namespace app\components; 

class Formatter extends \yii\i18n\Formatter 
{ 
    public function asRoundedCurrency($value, $currency) 
    { 
     return $this->asInteger(round($value)) . ' ' . $currency; 
    } 
} 

usarlo al posto del formattatore predefinito uno poi chiamare in questo modo:

[ 
    'attribute' => 'Score', 
    'format' => ['roundedCurrency', 'EUR'], 
] 

Questo permette anche di impostare liberamente il simbolo di valuta.

+0

ho ricevuto questo errore 'Class 'NumberFormatter' non trovato' e ho importato' yii \ i18n \ Formatter' – rob180

+0

@ rob180 NumberFormatter è un oggetto [PHP] standard (http://php.net/manual/en/class .numberformatter.php), ho dimenticato di aggiungere alcuni backslash. Dovrebbe essere risolto ora. Si noti che è necessario avere le estensioni intl PHP installate per farlo funzionare. – tarleb

+0

è sempre lo stesso. Forse il server non ce l'ha ... – rob180

3

In main.php:

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

], 

essere sicuri che le estensioni php_intl è installato. Per me funziona.

Collegamento alla documentazione yii-i18n-formatter.