vue.js Inertia / Laravel PATCH重定向也在尝试更新引用

nom7f22z  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(116)

我有一个Laravel / InertiaJS应用程序,我从Vue前端执行Axios请求来更新某些模型。在我的例子中,我有一个Proposal显示页面,其中还显示与该Proposal相关的Tasks
我有一个Vue子组件,它执行Axios调用来更新特定任务:

const moveToNextStatus = (status) => {
    console.log('run')
    // update the status of the task using axios
    axios.patch(`/data/tasks/${props.task.id}`, {
        status: status
    })
}

字符串
这是它所指的路线:

Route::patch('/data/tasks/{task}', [\App\Http\Controllers\TaskController::class, 'update'])->name('tasks.update');


然后,在我的LaravelTaskController中,这是我的update方法的样子:

public function update (Request $request, Task $task)
{
    $task->update($request->all());

    return redirect()->back();
}


出于某种原因,当Axios对PATCH /tasks/{task}的请求被触发时,它还会调用路由PATCH /proposals/{proposal},并尝试更新失败的建议。
也许这与从子组件重定向有关?有人能帮帮我吗?

mnowg1ta

mnowg1ta1#

Inertia公司的文件说明:
303响应代码在PUT、PATCH或DELETE请求后重定向时,必须使用303响应代码,否则后续请求将不会被视为GET请求。303重定向与302重定向非常相似;然而,后续请求被显式地改变为GET请求.
如果您使用的是我们的官方服务器端适配器,所有重定向都将自动转换为303重定向。
您可以在此处的文档中找到此信息:https://inertiajs.com/redirects
它还希望您使用非标准的helper进行重定向,例如;

return to_route('users.index');

字符串
我不同意它,但它是-似乎它违反了网页状态代码标准,使用303时,页面还没有重定向在所有。

相关问题