DEV Community

Cover image for Form Request Validation in Laravel: Step-by-step Implementation
Rodolfo Martins
Rodolfo Martins

Posted on

Form Request Validation in Laravel: Step-by-step Implementation

Validation is a critical component in all web applications. It ensures that the data we receive is both correct and secure. In Laravel, one of the most powerful validation features is Form Request Validation. It simplifies validation by placing it in a form request class, separate from your controller or route, leading to cleaner and more maintainable code. In this blog post, we will implement Form Request Validation in Laravel step-by-step.

Creating a Form Request

The first step is to create a Form Request. Laravel's make:request Artisan command generates a form request class in app/Http/Requests:

php artisan make:request StoreBlogPost
Enter fullscreen mode Exit fullscreen mode

This will create a class named StoreBlogPost in app/Http/Requests directory.

Writing the Validation Rules

The generated class contains two methods: authorize and rules.

The authorize method is where you control the access: if the method returns true, the validation proceeds. If false, it fails, and the user receives a 403 response.

In our case, let's allow anyone to create a blog post:

public function authorize()
{
    return true;
}
Enter fullscreen mode Exit fullscreen mode

The rules method is where you define your validation rules. Let's say a blog post requires a unique title, content, and a category:

public function rules()
{
    return [
        'title' => 'required|unique:posts|max:255',
        'content' => 'required',
        'category' => 'required',
    ];
}
Enter fullscreen mode Exit fullscreen mode

Using the Form Request

To use the form request, type-hint it in your controller method. Laravel will automatically validate the incoming request using your form request before the controller method is called:

public function store(StoreBlogPost $request)
{
    // The incoming request is valid...

    // Retrieve the validated input data...
    $validated = $request->validated();
}
Enter fullscreen mode Exit fullscreen mode

In this case, Laravel will validate the POST request data based on the rules method in the StoreBlogPost form request.

Customizing Error Messages

You can customize error messages in the form request class by adding a messages method:

public function messages()
{
    return [
        'title.required' => 'A title is required',
        'content.required'  => 'Content is required',
        'category.required'  => 'A category is required',
    ];
}
Enter fullscreen mode Exit fullscreen mode

Conclusion

With Form Request Validation, Laravel provides a clean and convenient way to validate incoming HTTP requests. This approach improves code organization by separating validation logic from controller code, making the application easier to maintain and understand.

As you've seen in this blog post, setting up form request validation in Laravel is a straightforward process. By using this powerful feature, you can enhance your web application's validation system and provide a better user experience.

Remember, robust validation is key to building secure, efficient, and user-friendly web applications. Happy coding!

Ready to become a Laravel Padawan?

๐ŸŒŸ๐Ÿ“š Unlock the power of Laravel development with my ebook, โ€œLaravel Padawan: A Beginnerโ€™s Guide to Models, Migrations, Controllers, and Blades.โ€

Level up your skills and build robust web applications. Get your copy now and embark on your coding journey! ๐Ÿ’ช๐Ÿš€

https://rodolfovmartins.gumroad.com/l/laravel-padwan

Top comments (0)