lexal / laravel-stepped-form-submitter
Stepped Form submitter for Laravel & Lumen.
Package info
github.com/lexalium/laravel-stepped-form-submitter
pkg:composer/lexal/laravel-stepped-form-submitter
Requires
- php: >=8.2
- illuminate/contracts: ^11.0 || ^12.0
- illuminate/support: ^11.0 || ^12.0
- lexal/form-submitter: ^2.0.1
- lexal/stepped-form: ^4.0.1
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.0.0
- illuminate/config: ^11.0 || ^12.0
- illuminate/container: ^11.0 || ^12.0
- infection/infection: ^0.30.1
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.5.62
- roave/security-advisories: dev-latest
- webimpress/coding-standard: ^1.4
Suggests
- illuminate/config: Required to use Laravel config (^11.0 || ^12.0).
- illuminate/events: Required to listen Stepped Form event (^11.0 || ^12.0).
README
The package is based on the Form Submitter and built for the Laravel framework.
Table of Contents
Requirements
PHP: >=8.2
Laravel: ^11.0 || ^12.0
Installation
Via Composer
composer require lexal/laravel-stepped-form-submitter
Configuration
Publish the config
Run the following command to publish the package config file:
php artisan vendor:publish --provider="Lexal\LaravelSteppedFormSubmitter\ServiceProvider\ServiceProvider"
Available config options
The configuration file config/form-submitter.php has the following options:
-
transaction_class- place a class name, instance or service alias which the FormSubmitter will use to handle transactions. Placenullor remove config to disable transactions.'transaction_class' => DatabaseTransaction::class, -
submitters- specify at least one form submitter that the stepped form will use to submit entity on FormFinished event. Must implementFormSubmitterInterface.'submitters' => [ // list of form submitters ],
Usage
-
Add form transaction implementation, if necessary.
use Lexal\FormSubmitter\Transaction\TransactionInterface; final class DatabaseTransaction implements TransactionInterface { public function start(): void { // start transaction } public function commit(): void { // commit transaction } public function rollback(): void { // rollback transaction } }
-
Create custom form submitters.
use Lexal\FormSubmitter\FormSubmitterInterface; final class CustomerFormSubmitter implements FormSubmitterInterface { public function supportsSubmitting(mixed $entity): bool { return $entity instanceof Customer; } public function submit(mixed $entity): mixed { // save entity to the database return $entity; } }
-
Update configuration file. Add form submitters and transaction class (if necessary).
return [ 'transaction_class' => DatabaseTransaction::class, 'submitters' => [ CustomerFormSubmitter::class, ], ];
-
Form submitter will call your custom form submitter automatically if it supports submitting of stepped-form entity.
License
Laravel Stepped Form Submitter is licensed under the MIT License. See LICENSE for the full license text.