Я пытаюсь сделать запрос PUT с Laravel и Vue, который отправит атрибуты и изображение в одном запросе. Насколько я знаю, единственный способ сделать это с помощью заголовка типа содержимого multipart / form-data. Это запрос PUT, потому что я использую ресурс Route :: в моем API. php, который, в свою очередь, вызывает update () в моем контроллере ресурсов.
Проверка запроса в Laravel не сработала, если Я установил поле как обязательное, оно всегда возвращало ошибку, указав это поле, независимо от того, устанавливал ли я поле по запросу или нет.
Я пытался добавить маршрут, который вызывал то же самое update () в Controller, но с методом POST и это сработало.
Итак, вопрос: можно ли использовать проверку с запросом PUT и многокомпонентным контентом? Является ли мой обходной путь лучшим решением?
Мой api. php
//default resource route
Route::resource('teams', 'TeamController');
//route I created for the workaround
Route::post('teams/imagesubmit', 'TeamController@update');
Мой метод update () в TeamController:
public function update(Request $request, Team $team)
{
$validated = $request->validate([
'name' => 'required',
'newImage' => 'required|image'
], [], [
'name' => 'nombre',
'newImage' => 'archivo del escudo'
]);
// code for saving newImage, hided because it's not importante here
$team->name = $request->name;
$team->save();
return $team;
}
Мой метод веб-интерфейса для публикации:
save() {
let data = new FormData();
data.append('name', this.form.name);
data.append('newImage', this.form.newImage);
//axios.put(this.model.ajaxUrl + '/' + this.id, data, config)
axios.post('/api/teams/imagesubmit', data, config)
}