kentuck1213
@kentuck1213

Как правильно делать валидация на multiupload image?

$data = Request::only('images');
        $rules = [
            'images' => 'required|mimes:png,jpg,jpeg,gif,svg'
        ];
//        dd($data['images']);
        $validator = Validator::make($data, $rules);
        if ($validator->fails()) {
            echo 'false';
        } else {
            echo 'true';
        }
        die();

Картинки которые выводит dd
array:2 [▼
  0 => UploadedFile {#29 ▼
    -test: false
    -originalName: "owner.jpg"
    -mimeType: "image/jpeg"
    -size: 6818
    -error: 0
  }
  1 => UploadedFile {#30 ▼
    -test: false
    -originalName: "port.png"
    -mimeType: "image/png"
    -size: 3710
    -error: 0
  }
]
// они есть , значит форма в html настроенна true

конкретно этот валидатор 'images' => 'required|mimes:png,jpg,jpeg,gif,svg' возвращает `Поле images должно быть файлом одного из следующих типов: png, jpg, jpeg, gif, svg.`. Пробовал добавлять в начале array но, таже ошибка.
Этот валидатор 'images' => 'image' жалуется что пустое поля `images` , так же пробовал добавлять array.
'images' => 'image|array'
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
erniesto77
@erniesto77
oop, rb, py, php, js
$rules = [
    // тут правила для всех полей кроме картинок
];

$validator = Validator::make($request->all(), $rules);

$validator->each('images', ['required', 'mimes:png,jpg,jpeg,gif,svg']);

if ($validator->fails()) {
    // ...
}


и лучше вынести валидацию в отдельный Requests (например php artisan make:request ImagesRequest) и в app/Http/Requests/ImagesRequest.php описать правила
namespace AppHttpRequests;

use AppHttpRequestsRequest;

class ImagesRequest extends Request {

  public function authorize()
  {
      return true; // если гости тоже могут загружать картинки то false
  }

  public function rules()
  {
      return [
        // тут правила для всех полей кроме картинок
      ];
      
      foreach($this->request->file('images') as $key => $val)
      {
        $rules['image.'.$key] = 'required|mimes:png,jpg,jpeg,gif,svg';
      }

      return $rules;

  }
}

и в контроллере в методах update и/или store поменять Request на App\Http\Requests\ImagesRequest
public function store(App\Http\Requests\ImagesRequest $request)
{
    // ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@IceJOKER
Web/Android developer
Читать документацию!
Validating Arrays
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы