Open mavsan opened 7 months ago
@mavsan У меня мысль которая потенциально является решением, так же и валидации. Так как код непосредственной загрузки достаточно короткий и легко воспроизводимым, то возможно имеет смысл добавить методы которые указали бы route, например:
Upload::make('images')->route('my.route.to.upload.image')
и уже в собственном маршруте мы можем делать различные проверки и не сохранять файл:
public function upload(Request $request)
{
// My any validation
$file = new File($request->file('photo'));
$attachment = $file->load();
return response()->json($attachment);
}
Да, с роутом - хорошая мысль. Возможно, вместо роута надо указывать метод в текущем экране, как с кнопкой. Или оба варианта - роут или метод, чтобы каждый решал для себя - как ему удобно: собрать все проверки загрузки в отдельном контроллере или в текущем экране работать.
Часто необходимо выполнять валидацию файлов, загруженных через Upload. Можно через Observer, но лучше, лгично и читаемо - через контроллер или Form Request в стандартном валидаторе Laravel. Предлагаю такое правило для валидатора.
Как использовать:
или
Класс принимает 2 параметра в конструктор - правила валидации и надо ли удалять файлы, не прошедшие валидацию (по умолчанию - true).
Есть один нюанс: required должно быть вынесено, как в примере выше, т.к. если поле не пришло или пустое - валидатор просто пропускает это поле, даже если указать required в параметрах AttachmentRule.
Вот, что получаем в итоге:![image](https://github.com/orchidsoftware/platform/assets/5114650/030baf68-95d3-494d-94f3-9c5cd74c8129)
После валидации:![image](https://github.com/orchidsoftware/platform/assets/5114650/6fa41f72-3ae6-434a-8585-881e1bfde2bd)
Ну и исправить описание ошибок, чтобы было не "Поле ... должно быть картинкой", а - "Файл ... должен быть картинкой" ну или как-то так, если это критично, конечно.