ValidationException (422)
Request data failed validation rules defined in the controller or form request.
Explanation
ValidationException is thrown when request data doesn't meet the validation rules defined using Laravel's Validator, validate() method, or Form Request classes. Laravel automatically catches this exception and returns a 422 Unprocessable Entity response with the validation errors. For web routes, it redirects back with errors. For API routes, it returns a JSON response with the error details. This is one of the most common exceptions in Laravel applications.
Common Causes
- Required field missing
- Data type mismatch
- Unique constraint violation
- String exceeds max length
- Invalid email format
Solution
Check the validation errors returned in the response or session to identify which fields failed. Review the validation rules in your controller or Form Request class. Use the errors variable in Blade templates to display validation messages. For API responses, check the JSON body for an errors object containing field-specific messages. Ensure required fields are present and data types match the expected format. Use dd(\$validator->errors()) in development to inspect all validation failures.
Code Example
// Validation in controller
public function store(Request $request)
{
$validated = $request->validate([
'email' => 'required|email|unique:users',
'name' => 'required|string|max:255',
'password' => 'required|min:8|confirmed',
]);
// If validation fails, 422 is returned automatically
return User::create($validated);
}
// Displaying errors in Blade
@if ($errors->any())
<div class="alert alert-danger">
@foreach ($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
</div>
@endif
// Getting old input after redirect
<input type="email" name="email" value="{{ old('email') }}">
Error Information
Language
php
Framework
laravel
Difficulty
Beginner
Views
30
Related Errors
Database
Duplicate Entry
The code tries to insert a record with a value that already exists in a unique column.
Laravel
QueryException (SQL Errors)
A database query failed due to invalid SQL, constraint violations, or connection issues.
500
Laravel
Laravel 500 Internal Server Error
A generic server-side error indicating something went wrong during request processing.
419
Laravel
TokenMismatchException (CSRF)
The CSRF token validation failed during a POST, PUT, or DELETE request.