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

如何在Blade中使用前缀路由?获取admin/subjects路由遇错误

解决Laravel Blade中获取admin/subjects路由失败的问题

我来帮你排查这个问题,核心原因是对Laravel资源路由的命名规则理解有偏差,咱们一步步来解决:

第一步:确认路由的实际命名

首先得搞清楚这条resource路由到底生成了哪些命名路由。打开终端,在项目根目录下运行这条命令:

php artisan route:list

你会看到针对subjects路由的类似条目:

| GET|HEAD  | admin/subjects          | admin.subjects.index   | admin\SubjectsController@index   | web       |
| GET|HEAD  | admin/subjects/create   | admin.subjects.create  | admin\SubjectsController@create  | web       |
| POST      | admin/subjects          | admin.subjects.store   | admin\SubjectsController@store   | web       |
| GET|HEAD  | admin/subjects/{subject}| admin.subjects.show    | admin\SubjectsController@show    | web       |

能看到吧?你的Route::resource('subjects','admin\SubjectsController')在admin前缀组里,生成的路由名称都是admin.subjects.xxx的格式——比如你能访问的列表页对应的路由名称是admin.subjects.index,而不是你可能误以为的admin.subjects。

第二步:在Blade中正确调用路由

知道正确的路由名称后,在Blade模板里就能正常生成链接了。比如要生成访问http://localhost/quizl/admin/subjects的链接,应该这么写:

<a href="{{ route('admin.subjects.index') }}">查看所有科目</a>

如果是跳转创建科目页面,就用route('admin.subjects.create');编辑某个科目需要传参数:route('admin.subjects.edit', $subject->id),其他CRUD动作以此类推。

为什么之前会出错?

你可能误以为resource路由的基础名称就是admin.subjects,但Laravel的resource路由会自动为每个CRUD动作添加后缀(.index、.create等),直接用route('admin.subjects')会找不到对应路由,自然就报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:38