| name | laravel:form-requests |
| description | Move validation and authorization into Form Requests; use rule objects, custom messages, and nested data handling to keep controllers slim |
Form Requests and Validation
Promote validation and authorization to dedicated Form Request classes. Keep controllers focused on orchestration and domain intents.
Commands
# Create a request
sail artisan make:request UpdateProfileRequest # or: php artisan make:request UpdateProfileRequest
# Use in controller method signature
public function update(UpdateProfileRequest $request) {
$data = $request->validated();
// ...
}
Patterns
- Define
authorize() to gate access; prefer Policies for complex checks
- Use rule objects:
Rule::unique('users', 'email')->ignore($user->id)
- Validate nested arrays:
items.*.sku, addresses.home.city
- Prefer
nullable + specific rules instead of sometimes for optional fields
- Standardize attribute names / messages via
attributes() and messages()
- Centralize common rules in custom
Rule classes or traits
- Return
$request->safe()->only([...]) when partial updates are intended
Testing
- Feature test the endpoint: assert validation errors and success flows
- Unit test custom validators and rule objects in isolation