同样,您可以在语言文件中指定验证消息时使用*字符,使基于数组的字段使用单个验证消息变得轻而易举:
'custom' => ['person.*.email' => ['unique' => 'Each person must have a unique e-mail address']]
它似乎不起作用。我有一条验证消息:
'infos.*.*.*' => ['required' => 'My text']
然后我在视图中有一些输入:
<input type="text" name="infos[1234][0][name]">
<input type="text" name="infos[1234][1][name]">
<input type="text" name="infos[5678][0][name]">
在我的控制器中,我验证输入:
$this->validate($request, [
'infos.*.*.*' => 'required'
]);
在视图中我有一个错误的显示器:
@if (count($errors) > 0)
<strong>Oops. Errors:</strong>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
如果我把所有输入都留空了,我得到了:
My text
My text
My text
My text
My text
etc.
我的代码出了什么问题?阅读Laravel文档我虽然应该有用(我的意思是:它应该只显示一次)。我误解了什么吗?
答案 0 :(得分:0)
这是按预期工作的。由于您在数组中传递了多个输入,因此验证会为每个项目引发错误。因此,3个输入,2个导致错误和1个传递,显然会传递2个输入的错误。因此,在您的情况下,多个错误是由于多个输入未通过验证。