2017-10-20 288 views
0

我在我的刀片文件中的很多地方使用貨幣格式。我正在使用number_format來顯示正確的貨幣格式。所以它看起來像這樣貨幣格式laravel

<p>${{ number_format($row->nCashInitialBalance, 2) }}</p> // $1,123.00 
<p>${{ number_format($row->nCashCalculatedBalance, 2) }}</p> // $300.50 
<p>${{ number_format($row->nCashPaymentsReceived, 2) }}</p> // $2,341.15 
<p>${{ number_format($row->nCardFinalBalance, 2)}}</p> // $234.10 

,如果我不使用它,它看起來像這樣

<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_formattoFixed(2)差不多50次了。

+0

嘗試[money_format](HTTP ://php.net/money_format)! – Maraboc

回答

1

您可以創建一個custom Laravel directive。您仍然需要在每個需要它的地方調用該指令,但帶來的好處是,如果您想要更改代碼(例如將number_format替換爲其他),則只需更新該指令。

實施例(來自文檔取出並更新您的使用情況下)(在AppServiceProviderboot法):

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

爲了在刀片使用:

@convert($var) 
+0

我認爲每次寫'''number_format($ money,2)'''都會更短。 如果我使用money_format(https://github.com/respon/laravel-money)。我仍然需要包裝變量?即@money(500,'BRL')? – Johnny

+0

不一定我認爲,但是如果你這樣做,你只能在特定的地方獲得特定代碼的好處,例如,如果你找到另一個包,就可以更容易地改變它。包中包含的Blade指令看起來不錯。 –

1

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

例如:

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

而在刀片的文件,你就只能用@money()這樣的:

@money($yourVariable)