I am trying to validate a field based on the validity of another field and cant seem to find the answer. Either I am so dumb at searching or its painfully obvious, but I am not able to find a satisfying answer so asking here.
I have a form where I create a
unit belongs to a
block and the
block belongs to a
class. In my form, I have fields to select a
class then the
block of that
class. What I am tring to achive is validate the
block and my rule looks like this.
"block_id" => 'required|integer|min:1|exists:blocks,id,class_id,'.$request->input('class_id'),
class_id is being validated prior to this rule like so
"class_id" => 'required|integer|min:1|exists:classes,id',
what I am trying to achive is to stop validating the
block_id if the
class_id is not valid.
I am also fine with stoping the validation altogether if the
class_id is not valid because I am already validating the fields from fron-end. and this is an extra layer of security. so I am not conserned about user experience (because a normal user will not post invalid data).
How can I achive this?
My first guess is to validate the
class_id first like
$request->validate([ "class_id" => 'required|integer|min:1|exists:classes,id' ]);
then carry out the remaining validation rules. But then I will have to validate request twise(don’t know if it matters any way).
Is there a simple solution to this like
$request->validate($rules, halt on first failure = true) kind of option?. My instincts says there should be one but I am unable to find it.
Thanks in advance 🙂
PS: I did ask this question a few weeks back but got no response so reposting to see if there really is an answer here