Introduction
Filament includes an action that is able to create Eloquent records. When the trigger button is clicked, a modal will open with a form inside. The user fills the form, and that data is validated and saved into the database. You may use it like so:Customizing data before saving
Sometimes, you may wish to modify form data before it is finally saved to the database. To do this, you may use themutateDataUsing() method, which has access to the $data as an array, and returns the modified version:
As well as $data, the mutateDataUsing() function can inject various utilities as parameters.
$data, the mutateDataUsing() function can inject various utilities as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
Customizing the creation process
You can tweak how the record is created with theusing() method:
$model is the class name of the model, but you can replace this with your own hard-coded class if you wish.
As well as $data and $model, the using() function can inject various utilities as parameters.
$data and $model, the using() function can inject various utilities as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
Redirecting after creation
You may set up a custom redirect when the form is submitted using thesuccessRedirectUrl() method:
$record parameter:
As well as $record, the successRedirectUrl() function can inject various utilities as parameters.
$record, the successRedirectUrl() function can inject various utilities as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
Customizing the save notification
When the record is successfully created, a notification is dispatched to the user, which indicates the success of their action. To customize the title of this notification, use thesuccessNotificationTitle() method:
As well as allowing a static value, the successNotificationTitle() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
successNotificationTitle() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
successNotification() method:
As well as allowing a static value, the successNotification() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
successNotification() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Notification
$notification
Filament\Notifications\Notification
The default notification object, which could be a useful starting point for customization.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
successNotification(null) method:
Lifecycle hooks
Hooks may be used to execute code at various points within the action’s lifecycle, like before a form is saved. There are several available hooks:These hook functions can inject various utilities as parameters.
Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
Halting the creation process
At any time, you may call$action->halt() from inside a lifecycle hook or mutation method, which will halt the entire creation process:
cancel() the action instead of halting it:
Using a wizard
You may easily transform the creation process into a multistep wizard. Instead of using aschema(), define a steps() array and pass your Step objects:
skippableSteps() method:
Creating another record
Modifying the create another action
If you’d like to modify the “create another” action, you may use thecreateAnotherAction() method, passing a function that returns an action. All methods that are available to customize action trigger buttons can be used:
Disabling create another
If you’d like to remove the “create another” button from the modal, you can use thecreateAnother(false) method:
As well as allowing a static value, the createAnother() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
createAnother() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.
Preserving data when creating another
By default, when the user uses the “create and create another” feature, all the form data is cleared so the user can start fresh. If you’d like to preserve some of the data in the form, you may use thepreserveFormDataWhenCreatingAnother() method, passing an array of fields to preserve:
$data to preserve:
$data array:
As well as allowing a static value, the preserveFormDataWhenCreatingAnother() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
preserveFormDataWhenCreatingAnother() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.Learn more about utility injection.
Action
$action
Filament\Actions\Action
The current action instance.
Arguments
$arguments
array<string, mixed>
The array of arguments passed to the action when it was triggered.
Data
$data
array<string, mixed>
The array of data submitted from form fields in the action's modal. It will be empty before the modal form is submitted.
Livewire
$livewire
Livewire\Component
The Livewire component instance.
Eloquent model FQN
$model
?string<Illuminate\Database\Eloquent\Model>
The Eloquent model FQN for the current action, if one is attached.
Mounted actions
$mountedActions
array<Filament\Actions\Action>
The array of actions that are currently mounted in the Livewire component. This is useful for accessing data from parent actions.
Eloquent record
$record
?Illuminate\Database\Eloquent\Model
The Eloquent record for the current action, if one is attached.
Schema
$schema
Filament\Schemas\Schema
[Actions in schemas only] The schema object that this action belongs to.
Schema component
$schemaComponent
Filament\Schemas\Components\Component
[Actions in schemas only] The schema component that this action belongs to.
Schema component state
$schemaComponentState
mixed
[Actions in schemas only] The current value of the schema component.
Schema get function
$schemaGet
Filament\Schemas\Components\Utilities\Get
[Actions in schemas only] A function for retrieving values from the schema data. Validation is not run on form fields.
Schema operation
$schemaOperation
string
[Actions in schemas only] The current operation being performed by the schema. Usually
create, edit, or view.Schema set function
$schemaSet
Filament\Schemas\Components\Utilities\Set
[Actions in schemas only] A function for setting values in the schema data.
Schema state
$schemaState
mixed
[Actions in schemas only] The current value of the schema that this action belongs to, like the current repeater item.
Selected Eloquent records
$selectedRecords
Illuminate\Support\Collection
[Bulk actions only] The Eloquent records selected in the table.
Table
$table
Filament\Tables\Table
[Actions in tables only] The table object that this action belongs to.