Version

Theme

Actions - Prebuilt Actions

Force-delete action

Overview

Filament includes a prebuilt action that is able to force-delete soft deleted Eloquent records. When the trigger button is clicked, a modal asks the user for confirmation. You may use it like so:

use Filament\Actions\ForceDeleteAction;

ForceDeleteAction::make()
    ->record($this->post)

If you want to force-delete table rows, you can use the Filament\Tables\Actions\ForceDeleteAction instead, or Filament\Tables\Actions\ForceDeleteBulkAction to force-delete multiple at once:

use Filament\Tables\Actions\BulkActionGroup;
use Filament\Tables\Actions\ForceDeleteAction;
use Filament\Tables\Actions\ForceDeleteBulkAction;
use Filament\Tables\Table;

public function table(Table $table): Table
{
    return $table
        ->actions([
            ForceDeleteAction::make(),
            // ...
        ])
        ->bulkActions([
            BulkActionGroup::make([
                ForceDeleteBulkAction::make(),
                // ...
            ]),
        ]);
}

Redirecting after force-deleting

You may set up a custom redirect when the form is submitted using the successRedirectUrl() method:

ForceDeleteAction::make()
    ->successRedirectUrl(route('posts.list'))

Customizing the force-delete notification

When the record is successfully force-deleted, a notification is dispatched to the user, which indicates the success of their action.

To customize the title of this notification, use the successNotificationTitle() method:

ForceDeleteAction::make()
    ->successNotificationTitle('User force-deleted')

You may customize the entire notification using the successNotification() method:

use Filament\Notifications\Notification;

ForceDeleteAction::make()
    ->successNotification(
       Notification::make()
            ->success()
            ->title('User force-deleted')
            ->body('The user has been force-deleted successfully.'),
    )

To disable the notification altogether, use the successNotification(null) method:

ForceDeleteAction::make()
    ->successNotification(null)

Lifecycle hooks

You can use the before() and after() methods to execute code before and after a record is force-deleted:

ForceDeleteAction::make()
    ->before(function () {
        // ...
    })
    ->after(function () {
        // ...
    })
Edit on GitHub

Still need help? Join our Discord community or open a GitHub discussion

Previous
Replicate action