laravel:form-requests
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
More from jpcaparas/superpowers-laravel
laravel:routes-best-practices
Keep routes clean and focused on mapping requests to controllers; avoid business logic, validation, or database operations in route files
89laravel:blade-components-and-layouts
Compose UIs with Blade components, slots, and layouts; keep templates pure and testable
89laravel:quality-checks
Unified quality gates for Laravel projects; Pint, static analysis (PHPStan/Psalm), Insights (optional), and JS linters; Sail and non-Sail pairs provided
80laravel:performance-caching
Use framework caches and value/query caching to reduce work; add tags, locks, and explicit invalidation strategies for correctness
77laravel:eloquent-relationships
Define clear relationships and load data efficiently; prevent N+1, use constraints, counts/sums, and pivot syncing safely
76laravel:queues-and-horizon
Operate and verify queues with or without Horizon; safe worker flags, failure handling, and test strategies
75