【发布时间】:2018-05-04 02:52:27
【问题描述】:
我在前端有带有 Vue 的 Laravel 应用程序,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!']);
}
所以很自然,我得到了一个方法不允许的异常,因为它正在重定向到一个应该只获得前一个视图的路由。
路由本身没问题,请求方法不行。
对于非信徒:)
也是一条路线:
【问题讨论】:
-
您是否尝试在“路由”而不是控制器中定义重定向?
-
你是什么意思,使用新的 Laravel 的
Route::redirect()? -
您只是想在控制器完成后将它们重定向回来,对吗?您很可能定义了一个向此处指定的控制器发送请求的 Route。您可以将
back()方法定义为路由本身的返回值,而不是在此控制器中定义重定向。这是“创建重定向”下方的示例laravel.com/docs/5.5/redirects。 -
我不觉得关闭是去这里的方式。另外,我需要重定向到
/task/{id},这是不可能在重定向路由上转发而不复杂
标签: php laravel laravel-5 laravel-request laravel-response