【问题标题】:Laravel 5.4-Route [/dashboard] not definedLaravel 5.4-Route [/dashboard] 未定义
【发布时间】:2017-10-25 03:44:53
【问题描述】:

这是我的路线文件

    Route::get('/' , ['as' => '/' , 'uses'=> 'loginController@getlogin']);
    Route::post('/login', ['as' => 'login', 'uses'=> 'loginController@postlogin']);

    Route::group(['middleware' =>['authen','roles']], function () {
    Route::get('/logout' ,['as'=>'logout', 'uses'=> 'loginController@getLogout']);
    Route::get('/dashboard',['as'=>'dashboard', 'uses'=> 'dashboardController@dashboard']);
    });

当我尝试登录时,它会在 UrlGenerator.php 第 304 行显示 InvalidArgumentException: 路线 [/dashboard] 未定义。我该怎么办??

【问题讨论】:

  • 你不是用route()action()代替url()吗?
  • 不,但是,这是强制性的吗??
  • 我觉得这个方法也应该行,
  • 我刚刚检查了 UrlGenerator.php 源代码中的行,您正在使用 route() 并且此辅助函数应仅与路由名称一起使用 url() 应在您的情况下使用可以在文档中看到:laravel.com/docs/5.4/helpers#method-url
  • url('/dashboard') 而不是 route('/dashboard') 就这么简单。

标签: php laravel-5.4


【解决方案1】:

正如评论中所说,这是解决方案:

Laravel 使用三个不同的概念来重定向用户(甚至只是显示链接):

  • 按网址
  • 按操作
  • 按路线

网址重定向

使用重定向助手快捷方式

redirect('/dashboard')

或适当的方法

redirect()->to('/dashboard');

动作重定向

redirect()->action('dashboardController@dashboard')

动作是控制器的一种方法。 要使重定向起作用,路由必须指向此操作。

路由重定向

redirect()->route('dashboard')

要使重定向起作用,路由必须有一个名称。 要为路由分配名称,您必须流畅地链接方法name,如下所示:

Route::get('/dashboard', 'dashboardController@dashboard')->name('dashboard');

您的情况

在您的情况下,您将重定向到路由而不是 url。因此,您有两个解决方案:

  • 为您的路线添加名称
  • 重定向到 url 而不是路由

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2018-08-23
    • 2021-11-30
    相关资源
    最近更新 更多