Do you use Laravel’s Form Request object to validate user input, but even though the forms are very similar, different requests, like updates and creates are just slightly different?
Maybe fields that are
required in a create route aren’t required to store an
update? Maybe a database lookup is needed for existing records that aren’t
necessary when creating from scratch?
Since the validation rules in a form request are in a
rules method it can be
tempting to add some conditionals to your
rules for “minor” tweaks instead of
creating another form request class.
I think you should create a new form request for every new set of validation rules. The reason is simple:
It’s easier to read a declaration of rules than to think through conditionals!
When you come back to change this in a month or in a year, you’ll thank yourself
for having multiple classes, even if it seems cluttered in your directory
structure, because you won’t have the added mental overhead of various
statements or ternaries.
So next time you realize your
create user routes have slightly
different rules for validation, go ahead and create a
UserCreateRequest and don’t worry about over-duplication here.