Laravel 8 中未定义命名路由
Posted
技术标签:
【中文标题】Laravel 8 中未定义命名路由【英文标题】:Named route is not defined in Laravel 8 【发布时间】:2021-03-28 10:54:15 【问题描述】:我收到以下错误,而不是重定向。为什么?
路由 [moderator.products] 未定义。
这些是我在中间件组函数中的路由:
Route::get('moderator/products', [ModeratorController::class, 'products'])
->name('moderator.products');
Route::redirect('/', route('moderator.products'));
【问题讨论】:
尝试在终端“php artisan route:cache”或“php artisan route:clear”中运行此命令 @PedroCosta 没有帮助。在终端得到同样的错误 运行这个 php artisan route:list 并显示结果 由于这都是在闭包中定义的,因此命名路由可能还不存在;尝试使用“/moderator/products”作为Route::redirect()
的第二个参数。
【参考方案1】:
可以通过先命名路由而不在末尾链接它来解决此问题。
Route::name('moderator.products')->get('moderator/products', [ModeratorController::class, 'products']);
Route::redirect('/', route('moderator.products'));
我测试了它们。它重定向到提到的命名路线。您需要做的就是首先调用name()
,然后链接get()
。
【讨论】:
我遇到了完全相同的问题,但这并没有为我解决这个问题。【参考方案2】:不是答案,但我通过不使用命名路由并使用 url 解决了这个问题,即将route('moderator.products')
换成url('moderator/products')
。
编辑:我做了一堆代码编辑来解决我的问题,所以我不确定,但我怀疑我的问题是由两次命名完全相同的路线引起的。如果遇到此问题,请仔细检查以确保您没有执行此操作。
【讨论】:
以上是关于Laravel 8 中未定义命名路由的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 中未定义动作 Controller@store 的问题
laravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义