Filament Table has a feature of clicking on the row and landing on the Edit page. What if you want to change that and instead open a modal with the record data? Let's do that using Table Actions.
By default, the table row has a link. First, we must disable the link by setting recordUrl
to null in the table.
class PostResource extends Resource{ // ... public static function table(Table $table): Table { return $table ->columns(...) ->filters(...) ->actions(...) ->bulkActions(...) ->recordUrl(null); } // ...}
Now, a method recordAction
is used to set the action for a whole row. In this method, we can pass a View Action class.
use Filament\Tables; class PostResource extends Resource{ // ... public static function table(Table $table): Table { return $table ->columns(...) ->filters(...) ->actions(...) ->bulkActions(...) ->recordAction(Tables\Actions\ViewAction::class) ->recordUrl(null); } // ...}
And now, when clicked on a row, the view action will be called, and a modal with a records view will be opened.
Notice: don't forget that when creating a Resource, you also need to create a View. If you forgot to create, you can create a View to an existing Resource.
If you want more Filament examples, you can find more real-life projects on our FilamentExamples.com.
Hello,
is it also possible to add an EditAction (Header or Footer) in the ViewAction? Thanks
BR Thomas