Skip to content

[액션.내장된액션] ForceDeleteAction

개요

Filament에는 소프트 삭제된 Eloquent 레코드를 강제로 삭제할 수 있는 미리 만들어진 액션이 포함되어 있습니다. 트리거 버튼을 클릭하면 모달이 사용자에게 확인을 요청합니다. 다음과 같이 사용할 수 있습니다:

php
use Filament\Actions\ForceDeleteAction;

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

테이블 행을 강제로 삭제하려면 Filament\Tables\Actions\ForceDeleteAction을 대신 사용할 수 있으며, 여러 개를 한 번에 강제로 삭제하려면 Filament\Tables\Actions\ForceDeleteBulkAction을 사용할 수 있습니다:

php
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(),
                // ...
            ]),
        ]);
}

강제 삭제 후 리디렉션

폼이 제출된 후 사용자 지정 리디렉션을 설정하려면 successRedirectUrl() 메서드를 사용할 수 있습니다:

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

강제 삭제 알림 커스터마이징

레코드가 성공적으로 강제 삭제되면, 사용자의 작업 성공을 알리는 알림이 전송됩니다.

이 알림의 제목을 커스터마이징하려면 successNotificationTitle() 메서드를 사용하세요:

php
ForceDeleteAction::make()
    ->successNotificationTitle('사용자가 강제 삭제됨')

전체 알림을 커스터마이징하려면 successNotification() 메서드를 사용하세요:

php
use Filament\Notifications\Notification;

ForceDeleteAction::make()
    ->successNotification(
       Notification::make()
            ->success()
            ->title('사용자가 강제 삭제됨')
            ->body('사용자가 성공적으로 강제 삭제되었습니다.'),
    )

알림을 완전히 비활성화하려면 successNotification(null) 메서드를 사용하세요:

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

라이프사이클 훅

레코드가 강제 삭제되기 전과 후에 코드를 실행하려면 before()after() 메서드를 사용할 수 있습니다:

php
ForceDeleteAction::make()
    ->before(function () {
        // ...
    })
    ->after(function () {
        // ...
    })

나를 위한 문서 한글화