Request input data can be accessed using methods like $request->input('name'), $request->get('email'), or $request->all(). For specific input types, use $request->query() for GET parameters and $request->post() for POST data.
Request data can be validated using validate() method, Validator facade, or Form Request classes. Basic syntax: $validated = $request->validate(['field' => 'rule|rule2']). Failed validation redirects back with errors.
File uploads are handled using $request->file() or $request->hasFile(). Files can be validated using file, image, mimes rules. Use store() or storeAs() methods to save uploaded files.
Custom validation rules can be created using 'php artisan make:rule' command. Implement passes() method for validation logic. Can include custom error message. Register in service provider if needed.
Conditional validation uses sometimes(), required_if, required_unless rules. Can be based on other field values or custom conditions. Supports complex validation scenarios based on input data.
Custom messages can be defined in validation rules array, language files, or Form Request classes. Support placeholders for field names and values. Can be localized for different languages.
Validation pipelines process rules sequentially. Support dependent validations. Handle validation state between steps. Implement rollback mechanisms.
Request handling in Laravel manages HTTP requests using the Request class. It provides methods to access input data, files, headers, and server variables. Request handling is the foundation of processing user input in Laravel applications.
Old input data is accessible using old() helper function or @old() Blade directive. Data is automatically flashed to session on validation failure. Useful for repopulating forms.
Array validation uses dot notation or * wildcard. Example: 'items.*.id' => 'required|integer'. Can validate nested arrays and specific array keys. Supports array size validation.
Dependent field validation checks fields based on other field values. Uses required_with, required_without rules or custom validation logic. Can implement complex dependencies between fields.
Multiple files validated using array syntax and file rules. Can validate file count, size, type for each file. Support batch processing and individual file validation.
Dynamic rules generated based on input or conditions. Use closure rules or rule objects. Support runtime rule modification. Handle complex validation scenarios.
Cross-request validation compares data across multiple requests. Use session or cache for state. Handle race conditions. Support sequential validation steps.
Compose complex rules from simple ones. Support rule chaining and grouping. Handle rule dependencies and conflicts. Implement custom rule factories.
Form Request Validation is a custom request class that encapsulates validation logic. Created using 'php artisan make:request'. Contains rules() method for validation rules and authorize() method for authorization checks.
Common validation rules include required, string, email, min, max, between, unique, exists, regex, date, file, image, and numeric. Rules can be combined using pipe (|) or array syntax.
JSON requests can be handled using $request->json() method. Content-Type should be application/json. Use json() method for responses. APIs typically return JSON responses by default.
Use after database hooks in Form Requests or custom validation rules. Consider transaction rollback if validation fails. Handle unique rule with database transactions carefully.
Validation errors are automatically stored in session and can be accessed in views using $errors variable. Custom error messages can be defined in validation rules or language files.
CSRF protection prevents cross-site request forgery attacks. Laravel includes @csrf Blade directive for forms. VerifyCsrfToken middleware validates token. Can be disabled for specific routes.
Validation rules can accept parameters using colon syntax: 'field' => 'size:10'. Multiple parameters use comma separation. Can reference other field values or custom parameters.
Implicit validation rules (accepted, filled) validate only when field is present. Different from required rules. Useful for optional fields that need specific format when present.
Unique validation with soft deletes requires custom rule or withoutTrashed() scope. Consider restore scenarios. Handle unique constraints across active and deleted records.
Custom validation middleware for route-level validation. Support middleware parameters. Handle validation failure responses. Implement middleware groups.
Validation rules can inherit from base Form Request classes. Use trait for shared rules. Support rule overriding and extension. Handle rule conflicts and dependencies.
Cache validation rules for performance. Consider cache invalidation strategies. Handle dynamic rules with caching. Support cache tags and versioning.
Version validation rules for API compatibility. Support multiple rule versions. Handle rule deprecation and migration. Implement version negotiation.
Test validation rules using unit and feature tests. Mock dependencies. Test edge cases and error conditions. Support test data providers.
Dispatch events before/after validation. Handle validation lifecycle. Support event listeners and subscribers. Implement custom validation events.