Tuesday, May 23, 2017

Validation errors message on array

Quoting laravel documentation:

Likewise, you may use the * character when specifying your validation messages in your language files, making it a breeze to use a single validation message for array based fields:

'custom' => ['person.*.email' => ['unique' => 'Each person must have a unique e-mail address']]

It seems it does not work. I have a validation message:

'infos.*.*.*' => ['required' => 'My text']

Then I have some inputs in my view:

<input type="text" name="infos[1234][0][name]">
<input type="text" name="infos[1234][1][name]">
<input type="text" name="infos[5678][0][name]">

And in my controller I validate the input:

$this->validate($request, [
    'infos.*.*.*' => 'required'
]);

And in view I have a error displayer:

@if (count($errors) > 0)
    <strong>Oops. Errors:</strong>
    <ul>
      @foreach ($errors->all() as $error)
        <li></li>
      @endforeach
    </ul>
@endif

And if I leave all input empty I got:

My text
My text
My text
My text
My text
etc.

What's wrong with my code? Reading Laravel documentation I though it should have worked (I mean: it should have been displayed only once). Did I misunderstood something?



via rap-2-h

Advertisement