Laravel provides a simple and powerful way to validate user input using the validate()
method or custom Form Request classes. You can define rules for required fields, data types, max length, and more. Validation errors are automatically redirected with error messages. Blade views can display these errors using the $errors
variable. This ensures clean, secure, and reliable form submissions.
Method 1: Using validate()
inside Controller
app/Http/Controllers/UserController.php
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:50',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
]);
// Code to save user...
}
confirmed
means: password + password_confirmation fields must match.
Method 2: Using Form Request Class
Generate a Form Request:
Put this comment in your project terminal:
php artisan make:request StoreUserRequest
Edit the generated file: app/Http/Requests/StoreUserRequest.php
public function rules()
{
return [
'name' => 'required|string|max:50',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
];
}
Use it in Controller:
use App\Http\Requests\StoreUserRequest;
public function store(StoreUserRequest $request)
{
// Validated data
$data = $request->validated();
// Save user...
}
Custom Error Messages (Optional)
Add this in validate()
or inside the messages()
method in FormRequest:
app/Http/Requests/StoreUserRequest.php
$messages = [
'name.required' => 'Name is required',
'email.unique' => 'Email is already taken',
];
Display Errors in Blade
In your Blade view (e.g., create.blade.php
):
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
Summary:
Goal | Use |
---|---|
Quick validation | $request->validate() in controller |
Reusable validation | Form Request class |
Show errors in Blade | Use $errors variable |