Čamo's avatar
Level 3

How to validate multiple file upload in request

I have a form with multi upload. Validation is stored in CustomRequest object. Request has this rule for uploaded files:

			// rules
			$rules['images.*'] = 'required|image';

			...

			// messages
			'images.*.image' => 'forms.createBook.image_image',

The problem is the error is not asigned to images input. I am able to see it in $errors->all() but cant get it via @error('images'){{$message}}@enderror

What is the problem with rule 'images.*.image'?

0 likes
3 replies
Čamo's avatar
Level 3

So the problem is Laravel for multi upload errors creates key which does not match the key defined in rules. It creates this

Illuminate\Support\ViewErrorBag {#444 ▼
  #bags: array:1 [▼
    "default" => Illuminate\Support\MessageBag {#445 ▼
      #messages: array:1 [▼
        "images.1" => array:1 [▼
          0 => "forms.createBook.image_image"
        ]
      ]
      #format: ":message"
    }
  ]
}
Čamo's avatar
Level 3

This is really nasty

@if( $errors->all() )
    <?php $imgsErrors = [] ?>
        @foreach( $errors->all() as $e )
            @if( strpos( $e, 'image' ) !== FALSE )<?php $imgsErrors[$e] = __($e); ?>@endif
        @endforeach
    <div class="text-danger">{{ join('<br>', $imgsErrors) }}</div>
@endIf

Please or to participate in this conversation.