Не первый раз вижу попытки для передачи параметров в валидатор создавать отдельный класс. На мой взгляд этот подход усложняет читаемость кода и засоряет проект лишними классами. Подчеркну, передача параметров и процесс валидации - это разные понятия, валидация формы происходит в ларавелевском Валидаторе, поэтому передача параметров в валидатор в контроллере не нарушает принципа SRP.
Мой вариант:
public function store(Request $request)
{
$this->authorize('create', Model::class);
$request->validate([
'title' => 'required|max:255',
'content' => 'required',
'make_id' => 'required|exists:makes,id',
'thumbnail' => 'nullable|max:255'
]);
$model = Model::create(request->all());
return redirect()->route('models.edit',['model'=> $model->id])
->with([
'message' => _('car.model_added'),
]);
}
созданию файла тут вообще не место, передаем урл созданного файла