Laravel Multistep Forms Builder
abdallahmohammed/laravel-multistep-forms is a Laravel package for laravel multistep forms builder.
It currently has 12 GitHub stars and 39 downloads on Packagist (latest version v1.0.3).
Install it with composer require abdallahmohammed/laravel-multistep-forms.
Discover more Laravel packages by abdallahmohammed
or browse all Laravel packages to compare alternatives.
Last updated
composer require abdallahmohammed/laravel-multistep-forms
use AbdallaMohammed\Form\Form;
use Illuminate\Support\Facades\Route;
Route::get('form', function () {
return app(Form::class)->make(function (Form $form) {
// Create a step instance and define rules, messages and attributes
$form->step()->rules([
'name' => ['required', 'string'],
])->messages([
'required' => ':attribute Required',
])->attributes([
'name' => 'Name',
]);
// Add another step with dynamic rules
$form->step()->dynamicRules();
});
})->name('form');
Define a callback to fired before a step has been validated.
Return a response from this hook to return early before validation occurs.
before($step, Closure $closure)
$step could be Step instance, or the number of the step.
Define a callback to fired after a step has been validated. Step Number or * for all.
Return a response from this hook to return early before the form step is incremented.
after($step, Closure $closure)
$step could be Step instance, or the number of the step.
You can set a step as dynamic, so the step will take it's rules, messages and attributes from the request.
For example
use AbdallaMohammed\Form\Form;
use Illuminate\Support\Facades\Route;
Route::get('form', function () {
return app(Form::class)->make(function (Form $form) {
...
$form->step()->dynamicRules()->messages([
'foo' => 'bar',
]);
...
});
})->name('form');
From the example we have defined the attributes without the rules, so we must send the rules with the request. Here it is the example of the request body.
{
"step": 1,
"1.rules": {
"name": ["required", "string"]
}
}
1.rules is a reference to first step rules.
You can change 1 to the number of the dynamic step.
As the previous example you can send 1.messages and 1.attributes in the request body.
stepConfig(?int $step = null)Get the current step config, or a specific step config.
getValue(string $key, $fallback = null)Get a field value from the form state (session / old input) or fallback to a default.
setValue(string $key, $value)Set a field value from the session form state.
currentStep()Get the current saved step number.
requestedStep()Get the requested step number.
isStep(int $step = 1)Get the current step number.
isLastStep()Determine if the current step the last step.
isPast(int $step, $truthy = true, $falsy = false)Determine if the specified step is in the past.
isActive(int $step, $truthy = true, $falsy = false)Determine if the specified step is active.
isNext(int $step, $truthy = true, $falsy = false)Determine if the specified step is in the next.
toCollectionGet the array representation of the form state as a collection.
toArrayGet the array representation of the form state.