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
28
Related Errors
Laravel
ReflectionException
A class or method could not be found or instantiated via PHP reflection.
500
Laravel
Laravel 500 Internal Server Error
A generic server-side error indicating something went wrong during request processing.
405
Laravel
MethodNotAllowedHttpException (405)
The HTTP method used is not allowed for the requested route.
Database
Column Count Doesn't Match
The number of values in an INSERT statement doesn't match the number of columns.