Reputation: 513
I am fairly new in Laravel and Blade templating.
Can anyone help show me how to do this?
I have a view like this:
@foreach ($Expenses as $Expense)
<tr>
<td>{{{ $Expense->type }}}</td>
<td>{{{ $Expense->narration }}}</td>
<td>{{{ $Expense->price }}}</td>
<td>{{{ $Expense->quantity }}}</td>
<td>{{{ $Expense->amount }}}</td>
</tr>
@endforeach
I want the $Expense->price
and$Expense->amount
to be formatted.
I tried using it on the $Expense->amount
as number_format($Expense->amount)
but it didn't work.
Upvotes: 46
Views: 180794
Reputation: 2834
This works, use this code:
Example:
$number = 1234.56;
$format_number = number_format($number);
See the link for more information about number_format(): https://www.php.net/manual/en/function.number-format.php
Upvotes: 1
Reputation: 3237
Here's another way of doing it, add in app\Providers\AppServiceProvider.php
use Illuminate\Support\Str;
...
public function boot()
{
// add Str::currency macro
Str::macro('currency', function ($price)
{
return number_format($price, 2, '.', '\'');
});
}
Then use Str::currency() in the blade templates or directly in the Expense model.
@foreach ($Expenses as $Expense)
<tr>
<td>{{{ $Expense->type }}}</td>
<td>{{{ $Expense->narration }}}</td>
<td>{{{ Str::currency($Expense->price) }}}</td>
<td>{{{ $Expense->quantity }}}</td>
<td>{{{ Str::currency($Expense->amount) }}}</td>
</tr>
@endforeach
Upvotes: 4
Reputation: 336
If you are using Eloquent the best solution is:
public function getFormattedPriceAttribute()
{
return number_format($this->attributes['price'], 2);
}
So now you must append formattedPrice in your model and you can use both, price (at its original state) and formattedPrice.
Upvotes: 14
Reputation: 1069
If you are using Eloquent, in your model put:
public function getPriceAttribute($price)
{
return $this->attributes['price'] = sprintf('U$ %s', number_format($price, 2));
}
Where getPriceAttribute is your field on database. getSomethingAttribute.
Upvotes: 15
Reputation: 3755
This should work :
<td>{{ number_format($Expense->price, 2) }}</td>
Upvotes: 131