阵列上的验证错误消息

时间:2017-05-23 12:35:01

标签: php laravel laravel-5.4

引用laravel documentation

  

同样,您可以在语言文件中指定验证消息时使用*字符,使基于数组的字段使用单个验证消息变得轻而易举:

     

'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文档我虽然应该有用(我的意思是:它应该只显示一次)。我误解了什么吗?

1 个答案:

答案 0 :(得分:0)

这是按预期工作的。由于您在数组中传递了多个输入,因此验证会为每个项目引发错误。因此,3个输入,2个导致错误和1个传递,显然会传递2个输入的错误。因此,在您的情况下,多个错误是由于多个输入未通过验证。