Requests
Form Requests
Use Form Request classes for validation and authorization. This keeps controllers clean and centralizes validation logic.
- Extend
Illuminate\Foundation\Http\FormRequestfor custom request classes. - Define validation rules in the
rules()method. - Use the
authorize()method to control access to the request.
Example:
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true; // or custom logic
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
];
}
}
- Inject Form Request classes into controller methods for automatic validation.
Validation
Use Laravel's built-in validation for all user input. Validate in controllers or Form Request classes.
- Use validation rules for type, length, format, uniqueness, etc.
- Return clear error messages for failed validation.
- Use custom validation messages and attributes for better UX.
Example:
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
- Use
Validatorfacade for advanced validation scenarios.
Best Practices
- Centralize validation logic in Form Request classes.
- Use custom request classes for complex forms and APIs.
- Document validation rules and custom messages.
- Test validation logic with unit and feature tests.
- Use request data sanitization and normalization as needed.
Example: Custom Validation Message
public function messages()
{
return [
'name.required' => 'Please enter your name.',
'email.unique' => 'This email is already registered.',
];
}