Money field powered by Money PHP .
This package gives much better localization support for money fields in Filament than most other packages. For example when it comes to currency symbols and decimal and thousand separators. Especially for more obscure currencies.
Example of a money field with Swedish localization. This package would give "1234.56 kr", while most other solutions probably would give you something like "SEK 1234.56" which is not the correct format for Sweden.
- PHP 8.2 or higher
- Filament 3.0 or higher
- PHP Internationalization extension (intl)
- The database column should be a integers with minor units (i.e. cents) and not a float (Floats should never be used for storing money).
composer require pelmered/filament-money-field
Optional: Set the default options for currency and locale so that you don't have to set them for every field.
Option 1 (Recommended): Put the default options in your .env file.
MONEY_DEFAULT_LOCALE=sv_SE
MONEY_DEFAULT_CURRENCY=SEK
Option 2: Publish the config file and set the default options there.
php artisan vendor:publish --provider="Pelmered\FilamentMoneyField\FilamentMoneyFieldServiceProvider" --tag="config"
use Pelmered\FilamentMoneyField\Infolists\Components\MoneyEntry;
MoneyEntry::make('price'); // Defaults to USD and the current Laravel locale
// The default can be set in the Infolist class with:
public static string $defaultCurrency = 'SEK';
MoneyEntry::make('price')
->currency('USD')
->locale('en_US');
MoneyEntry::make('price')
->currency('SEK')
->locale('sv_SE');
use Filament\Forms\Components\MoneyField;
MoneyField::make('price'); // Defaults to USD and the current Laravel locale
MoneyField::make('price')
->currency('USD')
->locale('en_US');
MoneyField::make('price')
->currency('SEK')
->locale('sv_SE');
use Pelmered\FilamentMoneyField\Tables\Columns\MoneyColumn;
MoneyColumn::make('price'); // Defaults to USD and the current Laravel locale
MoneyColumn::make('price')
->currency('USD')
->locale('en_US');
MoneyColumn::make('price')
->currency('SEK')
->locale('sv_SE');