Laravel新增第二组同路径POST路由后出现路由未定义报错
Laravel新增路由后原有路由未定义问题原因及解决方案
核心原因
- 同请求方法、同URI的路由会被后定义的内容覆盖:你在
tabHome路由组内定义了两个完全相同的POST路由,URI都为当前组根路径(最终拼接为atribut/tabHome),Laravel注册路由时,后定义的addDataSecond路由会直接覆盖先定义的addDataFirst路由,相当于addDataFirst路由根本没有被注册到路由列表中,因此调用时会抛出未定义错误。 - 你删除第二组相关代码后
addDataFirst路由不会被覆盖,因此功能恢复正常,完全匹配上述覆盖逻辑。
解决方案
1. 拆分两个POST路由的URI(推荐)
给两个新增接口分配不同的路径,避免同方法同URI冲突,修改路由配置如下:
Route::group([ 'prefix' => 'atribut', 'as' => 'atribut.' ], function () { Route::group(['prefix' => 'tabHome', 'as' => 'tabHome.'], function () { Route::get('', [AtributDashboardController::class, 'showTab'])->name('showTab'); // 修改POST路由路径为add-first Route::post('add-first', [AtributDashboardController::class, 'addDataFirst'])->name('addDataFirst'); Route::get('deleteDataFirst/{id}', [AtributDashboardController::class, 'deleteDataFirst'])->name('deleteDataFirst'); // 修改POST路由路径为add-second Route::post('add-second', [AtributDashboardController::class, 'addDataSecond'])->name('addDataSecond'); Route::get('deleteDataSecond/{id}', [AtributDashboardController::class, 'deleteDataSecond'])->name('deleteDataSecond'); }); });
修改后同步调整视图中表单的提交路径即可。
2. 验证路由并清理缓存
修改完成后执行以下命令清理路由缓存,确认路由正常注册:
# 清理路由缓存 php artisan route:clear # 查看已注册的路由列表,确认addDataFirst、addDataSecond路由都存在 php artisan route:list
内容的提问来源于stack exchange,提问作者Ariel Gemilang
相关产品推荐
相关产品推荐

