这是我的验证人:
$validator = Validator::make($request->all(), [
'considerations' => 'required',
'product_id.*' => "required"
]);
它也验证considerations
。如果$request
缺少considerations
项,则会抛出:
注意事项字段为必填字段。
哪个是对的。但是它并不关心product_id
。如果我不发送该参数,它也会通过验证。仅当我发送product_id[0]
并且没有任何值时,它将引发错误。然后它将抛出:
product_id.0字段为必填字段。
但是,如果我不发送product_id
参数,则它不会在乎,也不会引发任何错误。为什么?我该如何解决?
答案 0 :(得分:2)
看起来您的验证规则等同于说
“如果提供了product_id字段,请确保product_id数组的所有内容都具有一个值”
我会在验证数组中添加另一条规则 {
"presets": ["env"]
}
,该规则应确保product_id关键字也位于发布字段中。
答案 1 :(得分:1)
您必须对product_id
本身进行验证。例如
$validator = Validator::make($request->all(), [
'considerations' => 'required',
'product_id' => "required|array",
'product_id.*' => "required"
]);
答案 2 :(得分:1)
您可以这样使用
$rules = ['considerations' => 'required',
'product_id-token' => 'required|array'];
$message = ['considerations.required' => 'Your validation message',
'product_id-token.required' => 'Your validation message',];
$validator = Validator::make($request->input(), $rules, $message);