Laravel 9.37.0已定义路由提示不存在问题求助
解决方案:Laravel路由提示不存在但已在route:list中显示的问题
问题根源
Laravel的Route::resource会自动生成带动作后缀的路由名称,比如categorie.index、categorie.show、categorie.create等,不存在单纯名为categorie的路由。你在视图中调用route('categorie', $service->id)时,实际是在请求一个未定义的路由名称,所以报错。
可行解决方法
方法1:使用resource生成的正确路由名称
- 执行
php artisan route:list,找到对应动作的路由名称(比如查看单个分类详情对应的是categorie.show) - 修改视图中的路由调用:
<a href="{{ route('categorie.show', $service->id) }}" class="btn btn-sm btn-primary mb-1"><i class="bi bi-eye"></i></a>
方法2:手动定义名为categorie的路由
如果你确实需要一个名为categorie的路由,需手动添加,注意避免和resource路由冲突:
// 在web.php中添加,可放在resource路由之前或之后 Route::get('/categorie/{id}', [CategorieController::class, 'show'])->name('categorie');
注意:如果resource路由已经定义了
/categorie/{categorie}(对应categorie.show),手动定义的路由参数名建议和resource保持一致(比如用{categorie}代替{id}),避免控制器方法接收参数时出现问题。
方法3:清除路由缓存
如果修改路由后仍报错,可能是路由缓存导致的,执行以下命令清除缓存:
php artisan route:clear
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

