Form Requests in Laravel

What are Form Requests in Laravel?

Form Requests in Laravel are custom request classes that contain validation and permission logic. Delegating validation to Form Requests allows you to keep controllers clean and manageable.


Origin

Form Requests were created to simplify validation by transferring it from controllers to dedicated classes.


Why are Form Requests Used?

  1. Cleaner Controllers: separates validation logic from application logic.
  2. Reusable Logic: Validation rules are reusable across many actions.
  3. Custom Error Messages: You may easily create custom messages for validation errors.

Best Practices.

  1. Generate Requests with Artisan: To create Form Requests, run 'php artisan make:request'.
  2. Use Rules Method: Define validation rules using the request's 'rules' method.
  3. Handle Authorization in Form Requests: Use the 'authorize' function to implement access restriction.

Example in Action

To validate a request for creating a post, generate a Form Request:

php artisan make:request StorePostRequest

In StorePostRequest, define validation rules:

public function rules()
{
    return [
        'title' => 'required|max:255',
        'content' => 'required',
    ];
}

In the controller, inject the request:

public function store(StorePostRequest $request)
{
    Post::create($request->validated());
}

Read more