Разместите запрос с многочастным контентом в Laravel - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь сделать запрос 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)
        }
...