Courses

Filament 3 From Scratch: Practical Course

Column Formatting: Badges, URLs, Labels, Alignment, Dates

You're reading a FREE PREVIEW of a PREMIUM course.
Summary of this lesson:
- Adding badges/tags to columns
- Creating clickable URL columns
- Customizing column labels
- Formatting date fields

Filament Table Builder has dozens of ways how to customize column values. In this lesson, I will touch on the most commonly used ones.


Show as Tags/Badges

Filament has a general concept of a "Badge", I personally call it a "Tag", which is just a visual representation of a text/number surrounded by a border.

Let's take a look at it by just adding ->badge() to two columns in our Products table: status and tags.

return $table
->columns([
Tables\Columns\TextColumn::make('name'),
Tables\Columns\TextColumn::make('price'),
Tables\Columns\TextColumn::make('status')
->badge(),
Tables\Columns\TextColumn::make('category.name'),
Tables\Columns\TextColumn::make('tags.name')
->badge(),
])

Here's the visual result:

As you can see, Filament automatically wraps the text as a "badge". Not only does it work for a simple TextColumn, but also, in the case of the belongsToMany relationship, it shows multiple badges instead of a comma-separated text.

You can also specify different colors for different badge values.

Tables\Columns\TextColumn::make('status')
->badge()
->color(fn (string $state): string => match ($state) {
'in stock' => 'primary',
'sold out' => 'danger',
'coming soon' => 'info',
}),

Here's how it looks now:

You can choose the colors from....

The full lesson is only for Premium Members.
Want to access all 24 lessons of this course? (101 min read)

You also get:

  • 76 courses
  • Premium tutorials
  • Access to repositories
  • Private Discord