laravel中的货币格式

时间:2017-10-20 11:57:56

标签: laravel currency-formatting

我在我的刀片文件中的很多地方使用货币格式。我使用number_format来显示正确的货币格式。所以它看起来像这样

<p>${{ $row->nCashInitialBalance }}</p> // $1123
<p>${{ $row->nCashCalculatedBalance }}</p> // $300.5
<p>${{ $row->nCashPaymentsReceived }}</p> // $2341.15
<p>${{ $row->nCardFinalBalance }}</p> // $234.1

如果我不使用它,它看起来像这样

toFixed(2)

对于输入字段,我在很多地方使用#nDiscount_fixed").val() = parseFloat( $("#nDiscount_fixed").val()).toFixed(2);

number_format

难道没有最简单的方法可以将所有变量显示为正确的货币格式吗?我现在使用了toFixed(2)const winston = require('winston') const logLevels = { levels: { emerg: 0, alert: 1, crit: 2, error: 3, warning: 4, notice: 5, info: 6, debug: 7 }, colors: { emerg: 'red', alert: 'red', crit: 'red', error: 'red', warning: 'yellow', notice: 'blue', info: 'green', debug: 'green' } } winston.addColors(logLevels) const logger = winston.createLogger({ levels: logLevels.levels, transports: [ new winston.transports.Console({ format: winston.format.simple(), colorize: true }) ] }); logger.info('server starting...', {date: new Date()}) 差不多50次。

6 个答案:

答案 0 :(得分:9)

您可以创建custom Laravel directive。您仍然需要在您需要的每个地方调用该指令,但如果您想要更改代码(例如将number_format替换为其他内容),则需要更新该指令。

示例(取自文档并针对您的用例进行了更新)(在您的AppServiceProvider boot方法中):

Blade::directive('convert', function ($money) {
    return "<?php echo number_format($money, 2); ?>";
});

在Blade中使用:

@convert($var)

答案 1 :(得分:5)

您可以在AppServiceProvider文件的boot()方法中添加custom Blade directive

例如:

Blade::directive('money', function ($amount) {
    return "<?php echo '$' . number_format($amount, 2); ?>";
});

在您的Blade文件中,您只需使用@money(),就像这样:

@money($yourVariable)

答案 2 :(得分:3)

我最不会使用“指令”......我发现在模型上使用与访问器相同的逻辑更清晰。

public function getAmountAttribute($value)
{
    return money_format('$%i', $value);
}

答案 3 :(得分:0)

如果要设置负数的格式,则需要采用以下方式:

Blade::directive('money', function ($amount) {
        return "<?php
            if($amount < 0) {
                $amount *= -1;
                echo '-$' . number_format($amount, 2);
            } else {
                echo '$' . number_format($amount, 2);
            }
        ?>";
 });

在刀片文件中使用:

@money(-10)

如果您对指令进行编辑,则需要清除视图:

php artisan view:clear

答案 4 :(得分:0)

如果您使用 Laravel Cashier,您可以使用 Laravel 内置的 formatAmount() 方法。
boot()

中的 AppServiceProvider 方法中
Blade::directive('money', function ($expression) {
    return "<?php echo laravel\Cashier\Cashier::formatAmount($expression, 'gbp'); ?>";
});

在您的刀片视图中 Total: @money($proudct->price)

<块引用>

产出 - 总计:£100.00

注意:

  • 别忘了导入
  • 清除配置(如果需要)php artisan config:clear

答案 5 :(得分:-4)

使用此解决方案:

{{"$ " . number_format($data['total'], 0, ",", ".")  }}