In Laravel, validating incoming data is very easy — and it makes a big difference in keeping your app secure and reliable!
Direct Validation in the Controller
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
]);
User::create($validated);
}
Quick and practical for simple rules.
If validation fails, Laravel automatically returns a response with the error messages.
Form Request: Custom Validations
When validation rules start growing, it’s better to create a Form Request class:
php artisan make:request StoreUserRequest
In the generated file:
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
];
}
In the Controller:
public function store(StoreUserRequest $request)
{
User::create($request->validated());
}
Advantages of using Form Requests:
Cleaner controller code.
Easy to add authorization (using authorize()
).
Customize error messages (with messages()
).
Centralized and reusable validation rules.
Conclusion
In Laravel, validating data is more than just protecting your application — it’s about providing a better experience for users with clear messages and secure flows.
Using Form Requests makes your code cleaner, more organized, and ready to scale in a sustainable way.
Whenever your validation rules grow or need to be reused, prefer using a custom Form Request class!
Are you already using Form Requests in your projects? Or do you still prefer validating directly in the controller?