Laravel 9嵌套数组验证失败



我正在尝试验证Laravel 9中的嵌套输入数组,并且有一个恶魔的时间。输入中有三个数组。两个成功了,但第三个失败了,我找不到原因。我所做的所有研究都表明它应该有效。

有关输入:

<select name="interval[0]" required="">
<input type="number" name="interval_quantity[0]" required="">
<input type="text" name="amount[0]['major']" required="">
<input type="text" name="amount[0]['minor']" required="">
<select name="amount[0]['currency']" required="">

这些输入产生以下有效负载:

interval[0]: yearly
interval_quantity[0]: 1
amount[0]['major']: 30
amount[0]['minor']: 00
amount[0]['currency']: USD

我的表单请求验证规则是:

'interval' => ['required', 'array'],
'interval.*' => ['required', 'string', 'max:30'],
'interval_quantity' => ['required', 'array'],
'interval_quantity.*' => ['required', 'integer'],
'amount' => ['required', 'array'],
'amount.*' => ['required', 'array:major,minor,currency'],
'amount.*.major' => ['required', 'integer'],
'amount.*.minor' => ['required', 'integer'],
'amount.*.currency' =>['required', 'string', 'max:3']

一开始,我没有那么多钱。'行,并在'amount'行中有'array:major,minor,currency',但在早期的故障排除中,我决定这些键实际上不在'amount'中,它们在'amount[]'中,所以我添加了'amount'。*’。结果没有改变。

'Interval'和'Interval_quantity'数组将这些规则传递给控制器。但是'amount'数组会产生以下错误:

array(4) {
["amount.0"]=>
array(1) {
[0]=>
string(30) "The amount.0 must be an array."
}
["amount.0.major"]=>
array(1) {
[0]=>
string(37) "The amount.0.major field is required."
}
["amount.0.minor"]=>
array(1) {
[0]=>
string(37) "The amount.0.minor field is required."
}
["amount.0.currency"]=>
array(1) {
[0]=>
string(40) "The amount.0.currency field is required."
}
}

我无论如何也想不出我做错了什么。

您必须删除输入名称中的' '(单引号):

<input type="text" name="amount[0][major]" required="">
<input type="text" name="amount[0][minor]" required="">
<select name="amount[0][currency]" required="">

相关内容

  • 没有找到相关文章

最新更新