2015-07-31 14 views
5

Tôi muốn tệ của tôi để bỏ qua giá trị thập phân, cho đến nay tôi có điều này:yii2 - làm thế nào để thiết lập tiền tệ giá trị thập phân

main.php:

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

], 

xem:

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

Bất kỳ ý tưởng về làm thế nào để di chuyển về phía trước?

+0

Không quan tâm: Bạn đã có thể giải quyết vấn đề này chưa? – tarleb

Trả lời

7

Các manual trên currencyCode:

3 chữ ISO 4217 Mã tiền tệ cho thấy tiền tệ mặc định để sử dụng

Hãy thử thiết lập currencyCode để 'EUR' (mặc dù điều đó dường như không thể là quan trọng) và đặt trình định dạng trong một mảng

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

Điều này yêu cầu s phần mở rộng intl PHP được cài đặt. Trạng thái của tiện ích có thể được kiểm tra bằng cách gọi extension_loaded('intl'). Trong trường hợp không có phần mở rộng, đặt cược tốt nhất của bạn có lẽ là viết một trình định dạng tùy chỉnh.

<?php 
namespace app\components; 

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

Sử dụng nó thay cho định dạng mặc định một sau đó gọi nó như thế này:

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

này cũng cho phép bạn tự do thiết lập các biểu tượng tiền tệ.

+0

tôi nhận được lỗi này 'Class' NumberFormatter 'không tìm thấy' và tôi đã nhập 'yii \ i18n \ Formatter' – rob180

+0

@ rob180 NumberFormatter là một tiêu chuẩn [đối tượng PHP] (http://php.net/manual/en/class .numberformatter.php), tôi quên thêm một số dấu gạch chéo ngược. Nên được cố định ngay bây giờ. Xin lưu ý rằng một trong những cần phải có phần mở rộng intl PHP được cài đặt để làm việc này. – tarleb

+0

vẫn như cũ. Có lẽ máy chủ không có nó ... – rob180

3

Trong main.php:

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

], 

Hãy chắc chắn rằng phần mở rộng php_intl được cài đặt. Nó làm việc cho tôi.

Liên kết đến tài liệu yii-i18n-formatter.

Các vấn đề liên quan