You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel无控制器路由传递Inertia访问参数到Vue3组件问题

解决方案

1. GET方式(路由直接获取查询参数)

你之前接收不到参数的核心原因是Route::inertia默认不会自动把URL查询参数注入到组件Props,需要你手动取出参数再返回。直接在路由第三个参数传入闭包读取请求参数即可,无需创建控制器:

// web.php
use Illuminate\Http\Request;

Route::inertia('/second', 'Course/Second', function (Request $request) {
    return [
        // 注意参数名要和前端Inertia.get传递的key完全对应
        'courseName' => $request->query('courseName', '')
    ];
});

注意:你之前示例中URL出现的?name="xxx"和写死参数时的couseName都属于拼写错误,需要和前端传参、组件Props的courseName保持完全一致,否则会接收失败。

2. POST方式实现

Route::inertia仅支持GET/HEAD请求,要使用POST方式不需要单独写控制器,直接在路由闭包中返回Inertia渲染响应即可:

前端代码修改

把Inertia.get替换为Inertia.post:

// first.vue
tappedCourse(course: Course): void {
    const data: secondParams = {
        courseName: course.name,
    };
    Inertia.post("/second", data as any);
},

路由代码修改

// web.php
use Illuminate\Http\Request;
use Inertia\Inertia;

Route::post('/second', function (Request $request) {
    return Inertia::render('Course/Second', [
        'courseName' => $request->input('courseName', '')
    ]);
});

小提示:POST方式跳转后用户点击浏览器后退按钮会触发表单重发提示,如果不希望出现该提示,可以结合路由重定向+session闪存实现,按需选择即可。

内容的提问来源于stack exchange,提问作者Thiago Valente

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:57:02