aesen / laravel-auto-request
Automatically generate Laravel FormRequest classes from migrations
Package info
github.com/AbdullahEminEsen/laravel-auto-request
pkg:composer/aesen/laravel-auto-request
Requires
- php: ^8.1|^8.2|^8.3
- illuminate/support: ^9.0|^10.0|^11.0
README
Automatically generate Laravel FormRequest classes (Store & Update) directly from your database migrations.
This package helps you eliminate repetitive boilerplate by reading migration definitions and converting them into validation rules and messages.
✨ Features
-
Generate Store and Update FormRequest classes
-
Parse rules directly from migrations
-
Automatically detects:
required/nullablestring,text,boolean,integerforeignId→existsunique
-
Update requests automatically use
sometimes -
Configurable validation language (
tr,en) -
Customizable validation messages
-
Overwrite protection
-
Artisan command support
📦 Installation
composer require aesen/laravel-auto-request
Laravel will auto-discover the service provider.
⚙️ Configuration
Publish the config file:
php artisan vendor:publish --tag=auto-request-config
This will create:
config/auto-request.php
Available Options
return [ 'language' => 'tr', 'rules' => [ 'store' => [ 'required' => true, ], 'update' => [ 'use_sometimes' => true, ], ], 'messages' => [ 'tr' => [ 'required' => ':attribute alanı zorunludur.', 'unique' => ':attribute daha önce kullanılmış.', 'exists' => ':attribute geçerli değil.', ], 'en' => [ 'required' => ':attribute is required.', 'unique' => ':attribute has already been taken.', 'exists' => ':attribute is invalid.', ], ], ];
🚀 Usage
Generate both Store & Update requests:
php artisan make:auto-request Post
Generate only Store request:
php artisan make:auto-request Post --only=store
Generate only Update request:
php artisan make:auto-request Post --only=update
Generated files:
app/Http/Requests/Post/
├── StorePostRequest.php
└── UpdatePostRequest.php
🧠 How It Works
The package scans the model's create table migration and converts column definitions into validation rules.
Example Migration
$table->string('title')->unique(); $table->text('body'); $table->foreignId('category_id'); $table->boolean('active')->nullable();
Generated Rules (Store)
'title' => ['required', 'string', 'unique:posts,title'], 'body' => ['required', 'string'], 'category_id' => ['required', 'integer', 'exists:categories,id'], 'active' => ['nullable', 'boolean'],
Generated Rules (Update)
'title' => ['sometimes', 'string', 'unique:posts,title,$this->route("id")'], 'body' => ['sometimes', 'string'], 'category_id' => ['sometimes', 'integer', 'exists:categories,id'], 'active' => ['nullable', 'boolean'],
🌍 Validation Messages
Messages are generated automatically using the selected language.
Example (tr):
'title.required' => 'Title alanı zorunludur.', 'title.unique' => 'Title daha önce kullanılmış.',
🛣 Roadmap
- Index-based unique detection
- Model fillable fallback
- Attribute translations
- Column comment parsing
- Custom rule presets
🧑💻 Author
Abdullah Emin Esen GitHub: https://github.com/AbdullahEminEsen
📄 License
MIT License