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

Laravel 9结合Inertia配置路由遇问题,求正确实现方案

问题分析与解决方法

你的问题出在路由定义逻辑上:

  1. 你已经通过Route::resource('/user', UserController::class)生成了完整的CRUD资源路由,其中已经包含了GET /user/create路由,对应UserController的create方法,路由名称为user.create。
  2. 后面单独写的Route::resource('/create',[UserController::class,'create'])->name('create')是错误用法——resource路由是用来批量生成一组CRUD路由的,不能仅指定单个方法,这行代码无效,甚至可能引发路由冲突。

正确实现方式

方式一:使用资源路由自带的create路由(推荐)

直接保留已有的资源路由即可,无需额外定义create路由:

// routes/web.php
Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified'])->resource('/user',UserController::class);

此时可通过以下方式访问create页面:

  • 访问URL:/user/create
  • 在Vue组件中通过Inertia跳转:
    <button @click="router.push({ name: 'user.create' })">创建用户</button>
    

方式二:单独定义create路由(仅当不需要完整资源路由时使用)

如果不需要完整的CRUD资源路由,只想单独定义create路由,应该用Route::get而非resource:

// routes/web.php
Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified'])
    ->get('/create', [UserController::class, 'create'])
    ->name('create');

此时访问URL为/create,路由名称为create,Vue中跳转代码:

<button @click="router.push({ name: 'create' })">创建用户</button>

额外检查项

确保你的Vue组件Create.vue存在于resources/js/Pages/目录下,Inertia才能正确渲染该组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:48:16