label(__('filament-support::actions/edit.single.label')); $this->modalHeading(fn (): string => __('filament-support::actions/edit.single.modal.heading', ['label' => $this->getRecordTitle()])); $this->modalButton(__('filament-support::actions/edit.single.modal.actions.save.label')); $this->successNotificationTitle(__('filament-support::actions/edit.single.messages.saved')); $this->icon('heroicon-s-pencil'); $this->mountUsing(function (ComponentContainer $form, Model $record): void { $data = $record->attributesToArray(); if ($this->mutateRecordDataUsing) { $data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]); } $form->fill($data); }); $this->action(function (): void { $this->process(function (array $data, Model $record) { $relationship = $this->getRelationship(); if ($relationship instanceof BelongsToMany) { $pivotColumns = $relationship->getPivotColumns(); $pivotData = Arr::only($data, $pivotColumns); if (count($pivotColumns)) { $record->{$relationship->getPivotAccessor()}->update($pivotData); } $data = Arr::except($data, $pivotColumns); } $record->update($data); }); $this->success(); }); } public function mutateRecordDataUsing(?Closure $callback): static { $this->mutateRecordDataUsing = $callback; return $this; } }