【发布时间】:2018-10-19 07:18:17
【问题描述】:
我通过 javascript 从表单中发送了一个数组,该数组从不同的输入字段中获取值,然后将其存储在单个变量中。
<input type="hidden" name="details" id="details">
js
document.querySelectorAll('form')[1].addEventListener('submit', function(event) {
var details = [];
for (var i = 0; i < {{ $event->grocery->items()->count() }}; i++) {
details[i] = [
document.querySelectorAll('.store')[i].value,
document.querySelectorAll('.item')[i].value,
document.querySelectorAll('.quantity')[i].value,
document.querySelectorAll('.brand')[i].value,
document.querySelectorAll('.size')[i].value,
];
}
document.querySelector('#details').value = JSON.stringify(details);
});
然后在我的控制器中,我使用 json_decode 解码数组
$request->details = json_decode($request->details);
现在,我想验证每次迭代(只是检查它是否为空)。所以,我喜欢这样,
$request->validate([
...
'details.*.*' => 'required'
]);
但我的问题是这没有做任何事情。即使我发送了一个空迭代,它也会继续运行而不返回错误。
我在这里做错了吗?请帮帮我。
更新
示例 var 转储详细信息
array:3 [▼
0 => array:5 [▼
0 => "Grocery"
1 => "Grocery"
2 => "Grocery"
3 => "Grocery"
4 => "Grocery"
]
1 => array:5 [▼
0 => "Grocery"
1 => "Grocery"
2 => "Grocery"
3 => "Grocery"
4 => "Grocery"
]
2 => array:5 [▼
0 => "Grocery"
1 => "Grocery"
2 => "Grocery"
3 => "Grocery"
4 => "Grocery"
]
]
【问题讨论】:
-
您没有为每个数组项指定哪些字段。例如。
'details.*.*.store' -
@ThomasMoors 即使我这样做
'details.*.0',也没关系。 -
0是一个字段吗?不需要'details.*.0'.quantity'。quantity字段应该出现在一个名为 details 的数组内的数组内的每个第 0 个项目上... -
@ThomasMoors,我不这么认为。如果你看一下 js 代码,你可以看到我正在创建一个关联数组。
-
您能告诉我们
var_dump(json_decode($request->details))显示的内容吗?
标签: javascript php arrays laravel validation