25
votes

I just need to check in Laravel validation that an array contains minimum 2 values and maximum 4 values. Is there any default validation rule can be used for this ? The size element checks for exact size match and the other rules likes min and max are for strings, digits and file size.

2
I do not believe there currently is a validation rule for this. You can however create a custom validation rule.Jerodev
which laravel version do you use?darthsoup
I am using Laravel 5.2Happy Coder
Ah Ok. You need to make your own validator check. The default size validator only checks the value and not min/max.darthsoup

2 Answers

31
votes

A little bit late:

return [
    "ticket_photo" => ["required","array","min:2","max:4"], // validate an array contains minimum 2 elements and maximum 4 
    "ticket_photo.*" => ["required","mimes:jpeg,jpg,png,gif"], // and each element must be a jpeg or jpg or png or gif file 
];

laravel 5.6

37
votes

You can use between. . https://laravel.com/docs/5.2/validation#rule-between

For example:

'users' => 'required|array|between:2,4'

It is not explicitly stated in the docs, but it works with arrays, just like size.

For more details, read validating array lengths in Laravel