我的表单多次具有相同的输入字段。我的表单字段如下:
<input type='text' name='items[]'>
<input type='text' name='items[]'>
<input type='text' name='items[]'>
并且请求包含 ($request['items'):
array:1 [▼
"items" => array:3 [▼
0 => "item one"
1 => "item two"
2 => "item three"
]
]
我希望至少填写其中一项。我当前在 Controller 中的验证是
$validator = Validator::make($request->all(),[
'items.*' => 'required|array|size:1'
]);
这是行不通的。我尝试了大小、必需、可为空的组合。什么都行不通。
最佳答案
事实上,使用它就足够了:
$validator = Validator::make($request->all(),[
'items' => 'required|array'
]);
所做的更改:
items
而不是 items.*
- 如果您使用 items.*
,您想设置一般项目的规则这意味着您将规则分别应用于数组的每个发送元素 size:1
因为这意味着您只想发送一个元素(并且您至少需要一个)。你根本不需要它,因为你有 required
规则。您可以阅读 documentation for required rule你可以在那里读到空数组会导致 required
规则将失败,所以这个 required
数组规则使该数组至少应有 1 个元素,因此您不需要 min:1
或 size:1
完全关于php - 在 Laravel 5.7 中验证表单中的输入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404515/