label(fn (): string => __('filament-support::actions/create.single.label', ['label' => $this->getModelLabel()])); $this->modalHeading(fn (): string => __('filament-support::actions/create.single.modal.heading', ['label' => $this->getModelLabel()])); $this->modalButton(__('filament-support::actions/create.single.modal.actions.create.label')); $this->extraModalActions(function (): array { return $this->isCreateAnotherDisabled() ? [] : [ $this->makeExtraModalAction('createAnother', ['another' => true]) ->label(__('filament-support::actions/create.single.modal.actions.create_another.label')), ]; }); $this->successNotificationTitle(__('filament-support::actions/create.single.messages.created')); $this->button(); $this->groupedIcon('heroicon-s-plus'); $this->action(function (array $arguments, ComponentContainer $form): void { $model = $this->getModel(); $record = $this->process(fn (array $data): Model => $model::create($data)); $this->record($record); $form->model($record)->saveRelationships(); if ($arguments['another'] ?? false) { $this->callAfter(); $this->sendSuccessNotification(); $this->record(null); // Ensure that the form record is anonymized so that relationships aren't loaded. $form->model($model); $form->fill(); $this->halt(); return; } $this->success(); }); } public function disableCreateAnother(bool | Closure $condition = true): static { $this->isCreateAnotherDisabled = $condition; return $this; } public function isCreateAnotherDisabled(): bool { return $this->evaluate($this->isCreateAnotherDisabled); } }