Yii2:用千位分隔符格式化货币

Yii2: Format currency with thousands separator

我的 Yii2 和 Microsoft word 2016 使用 PhpOffice\PhpWord

值数据类型 decimal(15,2) 当我从我的项目字段中下载 microsoftwordfile.docx 时,值十进制显示 10000.00 但我需要 10,000.00 如何 config/coding 他们显示 10,000.00

此处myController.php

public function actionWord($id)
    {
     Settings::setTempDir(Yii::getAlias('@webroot').'/temp/');
     $templateProcessor = new TemplateProcessor(Yii::getAlias('@webroot').'/path/to/microsoftwordfile.docx');
     $model = Dataexample::findOne($id);
     $templateProcessor->setValue(
         [
            'amount',
         ],
         [
            $model->amount,
         ]);
         $templateProcessor->saveAs(Yii::getAlias('@webroot').'/path/to/microsoftwordfile.docx'); 
        echo Html::a('download', Url::to(Yii::getAlias('@web').'/path/to/microsoftwordfile.docx'), ['class' => 'btn btn-danger']);
     }

您可以使用 yii\i18n\Formatter 格式化货币,它为您提供

thousandSeparator : The character displayed as the thousands separator (also called grouping separator) character when formatting a number.

如果您使用的是 app-advanced,请转到您的 common\config\main.php,如果 app-basic,请转到 app/config/main.php nad 在 components 数组下添加以下内容。

'formatter' => [
     'thousandSeparator' => ',',
     'currencyCode' => 'USD',
],

现在您可以格式化任何给定的数字,如下所示

Yii::$app->formatter->asCurrency(100.25);
//will output 
0.25

Yii::$app->formatter->asCurrency(1000.25);
//will output
,000.25

Yii::$app->formatter->asCurrency(100000.25);
//will output 
0,000.25

你应该像下面这样改变你的功能

public function actionWord($id)
    {
     Settings::setTempDir(Yii::getAlias('@webroot').'/temp/');
     $templateProcessor = new TemplateProcessor(Yii::getAlias('@webroot').'/path/to/microsoftwordfile.docx');
     $model = Dataexample::findOne($id);
     $templateProcessor->setValue(
         [
            'amount',
         ],
         [
            Yii::$app->formatter->asCurrency($model->amount),
         ]);
         $templateProcessor->saveAs(Yii::getAlias('@webroot').'/path/to/microsoftwordfile.docx'); 
        echo Html::a('download', Url::to(Yii::getAlias('@web').'/path/to/microsoftwordfile.docx'), ['class' => 'btn btn-danger']);
     }

希望对您有所帮助。