Hoe u Filament PHP-acties onder bepaalde omstandigheden kunt stoppen

In sommige gevallen moeten FilamentPHP-processen worden gestopt op basis van bepaalde omstandigheden. Om dit te bereiken kunnen we de cancel()methode van een actie gebruiken. Dit artikel laat zien hoe u cancel() effectief kunt gebruiken en bevat meldingen om gebruikers zinvolle feedback te geven.

Je kunt ook halt() gebruiken, maar halt sluit modals niet.

Voorbeeldscenario:
Overweeg een scenario waarin we willen voorkomen dat een gebruiker gedwongen wordt verwijderd als deze actieve bestellingen heeft. We zullen een ForceDeleteBulkAction en de voorafgaande callback gebruiken om de noodzakelijke controles uit te voeren en de gebruiker dienovereenkomstig op de hoogte te stellen.


Tabellen\Actions\ForceDeleteBulkAction::make()
    ->voor(
        functie ($records, Tabellen\Actions\ForceDeleteBulkAction $action) {
            // code komt hier
        }
    )

 
Controleren op actieve bestellingen en het proces annuleren:
Om te controleren of er actieve bestellingen zijn, vraagt ​​u de relevante gegevens op en annuleert u het proces als er bestellingen worden gevonden. Dit kunnen wij als volgt bereiken:


Tabellen\Actions\ForceDeleteBulkAction::make()
    ->voor(
        functie ($records, Tabellen\Actions\ForceDeleteBulkAction $action) {
+ $ids = $records->pluck('id')->toArray();
+ $exists = Order::whereIn('user_id', $ids)->exists();
+ als ($bestaat) {
+ $actie->annuleren();
+ }
        }
    )

Bij Annuleren wordt geen melding weergegeven over de reden waarom het proces is geannuleerd. Gebruik Melding documentatie.

 


+gebruik Filament\Notificaties\Notificatie;

Tabellen\Actions\ForceDeleteBulkAction::make()
    ->voor(
        functie ($records, Tabellen\Actions\ForceDeleteBulkAction $action) {
            $ids = $record->orders()->pluck('id')->toArray();
            $exists = Volgorde::whereIn('user_id', $ids)->exists();
            als ($bestaat) {
+ Melding::make()
+ ->title('Fouten!')
+ ->body("Je kunt gebruikers niet geforceerd verwijderen omdat iemand orders heeft.")
+ ->status('gevaar')
+ ->verzenden();
                $actie->annuleren();
           }
        }
    )

Door de methode cancel() in FilamentPHP te gebruiken, kunnen we een actie effectief stopzetten op basis van specifieke omstandigheden. In het gegeven voorbeeld voorkomen we dat gebruikers met actieve bestellingen geforceerd worden verwijderd en verbeteren we de gebruikerservaring door een melding te sturen waarin de reden voor de annulering van het proces wordt uitgelegd. Deze aanpak zorgt ervoor dat gebruikers op de hoogte zijn van de beperkingen en dienovereenkomstig passende maatregelen kunnen nemen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert