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 ofsometimesfor optional fields - Standardize attribute names / messages via
attributes()andmessages() - Centralize common rules in custom
Ruleclasses 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