Перенаправление Laravel после обновления использует запрос PUT
У меня есть приложение Laravel с Vue на переднем конце, и Vue вызывает метод обновления из контроллера с помощью PUT
запрос.
Запрос работает, модель обновляется, но у меня есть проблема с перенаправлением, так как оно перенаправляется также как PUT
вместо простого GET
?
public function update(MomentsValidationRequest $request, Project $project, Task $task, Moment $moment)
{
foreach($request->materials as $material){
$material_id_array[$material['id']] = ['quantity' => $material['quantity']];
}
$moment->update($request->all());
if(isset($material_id_array))
$moment->materials()->sync($material_id_array);
return redirect()->back()->with(['alert-type' => 'success', 'message' => 'Moment updated!']);
}
Естественно, я получаю исключение метода, которому не разрешено, потому что он перенаправляет на маршрут, который должен получить только предыдущее представление.
Сам по себе маршрут в порядке, метод запроса - нет.
Для неверующих:)
Также маршрут:
3 ответа
Я знаю, что это немного поздно. Но на случай, если кто-нибудь наткнется на это.
Вы заявляете, что используете Vue во внешнем интерфейсе. Это предполагает, что запрос на размещение выполняется через вызов axios.
Я не вижу этого звонка, поэтому это только предположение. Но я считаю, что решением было бы вернуть объект json вместо ответа в контроллере, а затем перенаправить триггер перенаправления из самого компонента Vue.
В контроллере:
Session::flash('alert-type', 'success');
Session::flash('message', 'Moment updated!');
return response()->json(true);
В компоненте:
axios.post('/moments', this.moment).then(() => {
window.location.replace("moments");
});
Я считаю, что это как-то связано с тем, как axios обрабатывает запросы на исправление, похоже, он пытается автоматически обрабатывать ответ перенаправления, хотя я могу ошибаться, поэтому любой ответ приветствуется, если есть лучшее объяснение.
Нет, перенаправление выполняется всегда с GET
но вы не определили такой маршрут. Так что вы должны создать GET
маршрут, который будет делать что-то с этим.
Можно только перенаправить на GET
маршруты.