Laravel命名路由无法正常工作。

4

最近我转换到了Laravel 5.3。

我有以下路由:

Route::get('/activate/token', 'AccountActivationController@activate')->name('auth.activate');

But, when I use

dd(route('auth.activate'));

我收到了以下错误信息: InvalidArgumentException in UrlGenerator.php line 314: Route [auth.activate]未定义。 在使用以下内容时,它能够正常工作:
Route::get('/activate/token', [
    'as' => 'auth.activate',
    'uses' => 'AccountActivationController@activate',
]);

这在 Laravel 5.3 中是新功能吗?我对 Laravel 本身还不太熟悉。谢谢。

你在哪里会使用 dd(route('auth.activate')); - hassan
@hassan 我使用了dd(route('auth.activate'));来调试我的代码。但我并不明白为什么它没有起作用。我是在跟随一个教程,而那个教程中这段代码对导师来说完全正常运行的。 - Pritam Bohra
你在你的路由文件中使用它吗?web.php - hassan
@hassan 是的,我正在路由文件中使用它进行测试。 - Pritam Bohra
2个回答

2
对于未来遇到此问题的任何人,原因是因为您没有在路由器上刷新名称查找。
Laravel 5.2添加了流畅方法name($name)作为['as' => $name]的快捷替代方式,但是name($name)方法需要在注册路由后的某个时刻调用$router->getRoutes()->refreshNameLookups();,以便实际完成内部映射。
在当前形式下,示例laravel/laravel包中实现的RoutingServiceProvider会在幕后处理此操作,但如果您以任何自定义方式加载路由,则需要在适当的时间触发该刷新。
请参见https://github.com/laravel/framework/blob/8.x/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php#L47-L50,了解Laravel 8.x中如何处理。

0

缺少一个勾号 请尝试

dd(route('auth.activate'));

使用“代替”。


1
这是一个打字错误,错误似乎不是语法错误。 - hassan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接