Reuse The Same FormRequest Class for Both store() and update() in Laravel

Luckily, inside of rules() method we have access to check HTTP method that has been used. As we know, store() comes with POST method, and update() uses PUT method.

so we can use something like this,

StoreUserRequest
public function rules()
{
    $rules = [
        'name' => 'required',
        'email' => 'required',
    ];

    if ($this->getMethod() == 'POST') {
        $rules  = ['password' => 'required|min:6'];
    }

    return $rules;
}

And then, we can reuse the same FormRequest class in both methods, in the Controller.

Controller
public function store(StoreUserRequest $request)
{
    // ...
}

public function update(StoreUserRequest $request, User $user)
{
    // ...
}

I hope you got an idea.