【问题标题】:Laravel named routes not workingLaravel 命名路由不起作用
【发布时间】:2017-03-23 18:34:46
【问题描述】:

最近我切换到 Laravel 5.3。

我有以下路线

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

但是,当我使用

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

我收到以下错误:

UrlGenerator.php 第 314 行中的 InvalidArgumentException:未定义路由 [auth.activate]。

它与

完美配合
Route::get('/activate/token', [
    'as' => 'auth.activate',
    'uses' => 'AccountActivationController@activate',
]);

这是 Laravel 5.3 中的新功能吗?我对 Laravel 本身还很陌生。

谢谢。

【问题讨论】:

  • 你在哪里使用dd(route('auth.activate'));?
  • @hassan 我用过 dd(route('auth.activate'));调试我的代码。真的不明白为什么它不起作用。我正在关注一个教程,它对导师来说非常好。
  • 你在你的路由文件中使用它? web.php ?
  • @hassan 是的,我在路由文件中使用它来测试

标签: php laravel-5


【解决方案1】:

对于以后遇到这种情况的任何人,这是因为您没有刷新路由器上的名称查找。

Laravel 5.2 添加了 fluent 方法 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 中的处理方式

【讨论】:

    【解决方案2】:

    缺少一个刻度线 试试

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

    改为。

    【讨论】:

    • 这是一个错字,错误似乎不是语法错误;
    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多