Filament: Format Table Column Value with Custom Helper Method

If you want to format a table column value in a custom way, you can define the formatting method as a helper and then use it with ->formatStateUsing() in the column.

Here's an example from Dinero open-source project:

app/Filament/Resources/WalletResource.php

class WalletResource extends Resource
{
public static function table(Table $table): Table
{
return $table
->columns([
// ... other columns
Tables\Columns\TextColumn::make('currency_code')
->label(__('wallets.fields.currency_code'))
->formatStateUsing(fn (string $state): string => country_with_currency_and_symbol($state))
->sortable(),
]);
}
}

The country_with_currency_and_symbol() method is defined in this file:

app/Support/helpers.php

use Illuminate\Support\Collection;
 
function country_with_currency_and_symbol($state = null): Collection|string {
$countries = collect(countries())->mapWithKeys(function ($country) {
try {
$currency = currency($country['currency']);
return [
$country['currency'] => sprintf('%s - %s - %s (%s)',$country['name'], $currency->getCurrency(), $currency->getName(), $currency->getSymbol())
];
} catch (\Exception $e) {
return [null => null];
}
})->filter();
 
if($state) {
return $countries->get($state);
}
 
return $countries;
}

Then this file is auto-loaded with Composer:

composer.json

{
"autoload": {
"files": [
"app/Support/helpers.php"
]
},
}

Visual result:

Link to the Filament docs

Like our articles?

Become a Premium Member for $129/year or $29/month
What else you will get:
  • 59 courses (1057 lessons, total 42 h 44 min)
  • 79 long-form tutorials (one new every week)
  • access to project repositories
  • access to private Discord

Recent Premium Tutorials