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

Laravel 8 中未定义动作 Controller@store 的问题

laravel 8 - auth()->factory() 相同的 refresh() 和尝试() 在 JWT Auth Controller 中未定义

为 Laravel 8 路由定义命名空间 [重复]

错误:laravel 视图中未定义的变量

未定义路由 [threads.storev]。 Laravel 8 如何制作这条路线?