Laravel,如何仅在前一个规则为真时执行规则

Laravel, how to execute a rule only if the previous one is true

提问人:SoulArcangel 提问时间:10/10/2023 更新时间:10/10/2023 访问量:40

问:

如何仅当前一个规则为真时才执行该规则? 例如:

$input = request()->get('data');
$rules = [
   "id_country" => "required",
   "fiscalcode" => "required_if:id_country,128|fiscalcode",
]
$validator = Validator::make($input, $rules, $messages);

现在的问题是“fiscalcode”规则总是被验证的,相反,我希望它只有在前一个规则(required_if:id_country,128)为真时才被验证。 我怎样才能在一次检查中做到这一点?

Laravel 验证

评论

0赞 nice_dev 10/10/2023
将其用作"fiscalcode" => "required_if:id_country,==,128"
1赞 nice_dev 10/10/2023
这回答了你的问题吗?required_if Laravel 5 验证
0赞 aynber 10/10/2023
您可以将保释添加到您的规则中,以便在第一次失败时停止。
0赞 SoulArcangel 10/10/2023
我尝试使用“required_if:id_country,==,128”和“bail”,但结果没有改变。
0赞 aynber 10/10/2023
它应该是 .您不需要比较,因为required_if已经检查id_country是否为某个值'bail|required_if:id_country,128|fiscalcode

答:

0赞 SoulArcangel 10/10/2023 #1

我是这样解决的......

"fiscalcode" => ["required_if:id_country,128",Rule::when((int)$input['id_country'] == 128,"fiscalcode")],