Проверка запроса Laravel

Я надеюсь, что вы, ребята, можете мне помочь.

У меня есть эти входные файлы в форме:

Select images: <input type="file" name="images[][image]" multiple>
Select videos: <input type="file" name="videos[][video]" multiple>

И моя цель - заставить пользователя загрузить изображение, если видео не представлено. Возможности:

  • Хотя бы одно изображение
  • Хотя бы одно видео
  • Любая комбинация изображений с видео

Чего я хочу избежать:

  • Нет изображений и нет видео

Но меня смущает проверка, которую мне нужно использовать в моем контроллере. Вот что у меня есть на данный момент:

$this->validate($request, [
    'images' => 'required_without_all:videos.*.video',
    'images.*.image' => 'image',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);

Но это не работает. Я также пробовал (безуспешно):

$this->validate($request, [
    'images.*.image' => 'image|required_without_all:videos.*.video',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);

Как я могу достичь желаемого с помощью проверки Laravel?

Большое спасибо заранее.


person Erick Ramírez    schedule 19.06.2017    source источник
comment
вы сбросили запрос, чтобы убедиться, что вы правильно обращаетесь к переменным?   -  person Alex Mac    schedule 19.06.2017
comment
@AlexMac Я сделал. В запросе все правильно.   -  person Erick Ramírez    schedule 19.06.2017


Ответы (2)


У вас есть 2-мерный массив ввода. required_without_all - это правило проверки наличия одного поля, когда все остальные отсутствуют. В вашем случае у вас есть два поля ввода, каждое с несколькими загрузками файлов.

Итак, что вам нужно сделать, это переключить ваши случаи, используя required_without валидацию. Попробуйте это, может вам помочь.

$this->validate($request,[
    'images.*.*' => 'required_without:videos.*.*',
    'videos.*.*' => 'required_without:images.*.*',
]);

Это проверяет наличие изображения, когда изображение не загружено, и таким же образом проверяет наличие видео, когда изображение не загружено.

person Sagar Gautam    schedule 19.06.2017
comment
Не сработало ... Запрос проходит проверку, даже если я не выбираю ни изображения, ни видео. - person Erick Ramírez; 19.06.2017

Я сделал это, чтобы решить проблему:

$this->validate($request, [
    'images' => 'required_without_all:videos',
    'images.*.image' => 'image',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);
person Erick Ramírez    schedule 19.06.2017