Lifecycle hooks
Apart from Livewire defaults, TALL-forms offers these additional hooks.
Hooks
Description
updatedFoo($value, $fieldIndexKey)
after field update,
before real-time validation
updatedFooValidate()
after field update,
after updatedFoo(),
replaces real-time validation
saveFoo($validated_value)
After form submit,
after validation To manually save form data See Manually saving data
onCreateModel($validated_data)
On form submit,
if $model does not exist.
onUpdateModel($validated_data)
On form submit,
if $model does exist.
onDeleteModel()
When the delete button is clicked.
There is a $this->defaultDelete() method you can call after performing your access control.
saveAndStayResponse()
Save/Submit button
saveAndGoBackResponse()
Save and go back button
updatedFoo
Executes BEFORE field validation and AFTER field value is updated
The default Livewire way to manipulate data when a field is updated is to add an updatedFieldName() method to your component. This is not working with the form-component because the field is accessed via the field_data. To get around it, this package has added a fix.
You do NOT have to prefix with FormData
Example method name for an array field
form_data.people.namewill becomeupdatedPeopleName($validated_value)Example method name for
form_data.some_field_namewill becomeupdatedSomeFieldName($validated_value)
Example from above, the form_data.price field would become
public function updatedPrice($validated_value)
{
$this->form_data['price'] = round($validated_value, 2);
}saveFoo($validated_value)
See the Manually saving data page
onCreateModel($validated_data)
Required method if you are creating a new model instance
Executes AFTER field validation, intended to CREATE a model
The
$validated_datacontains all fields exceptcustomfields andrelationalfields
public function onCreateModel($validated_data)
{
$this->model = User::create($validated_data);
}onUpdateModel($validated_data)
Optional method, the
TallFormtrait has a default methodExecutes AFTER field validation, intended to UPDATE an existing model
The
$validated_datacontains all fields exceptcustomfields andrelationalfields
This is the default method supplied by the TallForm trait
public function onUpdateModel($validated_data)
{
$this->model->update($validated_data);
}onUpdateModel vs onCreateModel
When a form is submitted, the TallForm traits calls one of these methods based on
$model->existsonCreateModel()is mandatory, in a form where the model doesn't exist when the form mounts vsonUpdateModel(), which is optional.
This is how the form component evaluates which method to call.
filled($this->model) && $this->model->exists ? $this->onUpdateModel($model_fields_data) : $this->onCreateModel($model_fields_data);onDeleteModel
Optional method, the
TallFormtrait has a default methodExecutes when clicking the forms Delete button Set component property
$showDeleteto true, to show the delete button.The hook is invoked if model exists
This is the default method supplied by the TallForm trait
protected function onDeleteModel()
{
$this->defaultDelete();
}
The bundled defaultDelete() method
protected function defaultDelete()
{
$className = is_object($this->model) ? get_class($this->model) : "item";
$this->model->delete();
session()->flash('success', "The {$className} was deleted");
return redirect(urldecode($this->previous));
}saveAndStayResponse
This method defines the response after successful submission via the Save/Submit button. By default it stays on the same page and notifies a message or errors.
Example on how to override it.
protected function saveAndStayResponse()
{
$this->notify('success');
return redirect()->route('users.edit', $this->model->id);
}saveAndGoBackResponse
This method defines the response after successful submission via the Save & Go Back button.
By default it returns redirect()->back().
Example on how to override the method:
protected function saveAndGoBackResponse()
{
return redirect()->route('users.index');
}Last updated
Was this helpful?