gpt4 book ai didi

javascript - Laravel 验证数组迭代

转载 作者:行者123 更新时间:2023-11-30 20:31:59 26 4
gpt4 key购买 nike

我通过 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);
});

然后在我的 Controller 中,我使用 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"
]
]

最佳答案

如果你命名你的数组值会更容易

document.querySelectorAll('form')[1].addEventListener('submit', function(event) {
var details = [];
for (var i = 0; i < {{ $event->grocery->items()->count() }}; i++) {
details[i] = {
store: document.querySelectorAll('.store')[i].value,
item: document.querySelectorAll('.item')[i].value,
quantity: document.querySelectorAll('.quantity')[i].value,
brand:document.querySelectorAll('.brand')[i].value,
size: document.querySelectorAll('.size')[i].value,
};
}

document.querySelector('#details').value = JSON.stringify(details);
});

验证看起来像这样:

$request->validate([
...
'details.*.store' => 'required',
'details.*.item' => 'required',
'details.*.quantity' => 'required',
'details.*.brand' => 'required',
'details.*.size' => 'required'
]);

但如果它不适合你,那么 Laravel 的 Custom Validation Rules 总是有用的。

编辑:

我认为问题可能与您的数据更新有关:

$request->details = json_decode($request->details);

相反,你应该 modify your input befor validationModify input before form request validation

$request->request->set('details', json_decode($request->details));

关于javascript - Laravel 验证数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50248841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com