FilamentF
Filament2y ago
Ben

Custom Save Button for Create/Edit with Disable on FileUpload

Hello Filament Friends,
I have a problem with implementing different Save Buttons. My process should be such that the Save buttons determine whether an entry is active or not (published). So, my implementation has several buttons below the form, including "Save" and "Activate and Save." I'm not sure if my implementation is good. Depending on which button is pressed, I adjust data, like this:

Action::make('saveAndActivate')
  ->label('Activate & Save')
  ->color('success')
  ->action(fn () => $this->saveAndActivate());
...
public function saveAndActivate() {
    $this->data['active'] = 1;
    return $this->save();
}


Well, that works, but if uploads are not yet completed, one can click these buttons and the uploads are lost. In the case of the standard Save button, submission is blocked until completion. And that's what i want to achieve.

I tried to use the standard Actions and change them, but it didn't work. Like this...

$this->getSaveFormAction()
  ->mutateFormDataUsing(function (array $data): array {
      // this is not executed
      $data['active'] = true;
      return $data;
  })
  ->label('Activate & Save')

I know that there are methods to modify data before saving, but I'm not sure how to determine which button was pressed at that point.

And honestly, I haven't fully understood what the "submit('save')" in the standard action exactly means. I still need to figure that out.

Thank you!
Was this page helpful?