Дія (Action) у Filament - кнопка з необов'язковим модальним вікном і логікою, що виконується після підтвердження. Дії живуть у заголовку сторінки, в рядках таблиці, у масових операціях.
use Filament\Actions\Action;
use Filament\Forms\Components\Select;
Action::make('updateAuthor')
->label('Змінити автора')
->schema([
Select::make('authorId')
->label('Автор')
->options(User::query()->pluck('name', 'id'))
->required(),
])
->action(function (array $data, Post $record): void {
$record->author()->associate($data['authorId']);
$record->save();
})
Як це працює:
schema()описує поля модального вікна. Дані з форми приходять у замиканняaction()масивом$data, вже провалідованими.- У замикання автоматично підставляються залежності за іменем:
$record(поточний запис у таблиці чи на сторінці),$data,$livewire. fillForm()заповнює форму наявними даними.
Корисні налаштування:
->requiresConfirmation()- просте підтвердження без форми (для видалення, архівування).->visible(fn (Post $record) => ...)/->authorize('update')- показувати дію лише тим, кому можна.->successNotificationTitle('Збережено')- сповіщення після виконання.
Важливо: дія - не лише кнопка. Її логіка виконується на сервері через Livewire, тож перевірку прав роблять у самій дії (authorize), а не лише приховуванням кнопки.