laravel-auto-request maintained by aesen
Laravel Auto Request
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