Как проверить поле данных с помощью exclude_if в Laravel?

#laravel #laravel-validation

#laravel #laravel-проверка

Вопрос:

Я хочу проверить поле миниатюр. Когда пользователь загружает файл с типом mime pdf, требуется миниатюра. затем, если пользователь загружает фотографию, тип mime которой не является pdf. поле thumnail не требуется.

Вот код, который я пробовал:

   'file' => 'required|mimes:jpg,jpeg,pdf|max:2048',
  'thumbnail' => 'exclude_if:file,mimes:pdf|required'
  

Я знаю, что проверка на миниатюре была неправильной. Кто-нибудь может мне помочь?

Ответ №1:

Итак, вам в основном требуется эскиз, если mime-тип — pdf , вы можете использовать проверку required_if . Сначала добавьте

 use IlluminateValidationRule;
  

Затем,

 Validator::make($request->all(), [
     'file' => 'required|mimes:jpg,jpeg,pdf|max:2048',
     'thumbnail' => Rule::requiredIf(function () use ($request) {
          if ($request->file->getMimeType() == 'application/pdf') {
                 return true;
           } else return false;
      }),
]);
  

Комментарии:

1. mime_content_type — это функция php.

2. Спасибо @bhucho, я проверю это.

3. Я получил эту проблему: сообщение»: «mime_content_type(): может обрабатывать только строковые или потоковые аргументы», «exception»: «ErrorException», «file»

4. Я правильно ответил. Спасибо @bhucho за вашу помощь.