InvalidArgumentException 路由 [login] 未定义。在 Laravel 5.6 中。
InvalidArgumentException 路由 [login] 未定义。在 Laravel 5.6 中。
路由[login]未定义。
C:\xampp\xampp\htdocs\MMICTLTD\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php
伙计们,我需要你们的帮助,我一直在遇到这个路由未定义的错误,我正在运行laravel 5.6
我尝试设置多重认证,但这个错误让我非常沮丧。有人能帮忙吗?
我的handler.php
expectsJson()) { // code... return response()->json(['error' => '未经身份验证。'], 401); } $guard = array_get($exception->guards(), 0); switch ($guard) { case 'admin': $login = 'admin.login'; break; default: return redirect()->guest(route('login')); break; } } }
我的路由
/* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | 这里是你可以为应用程序注册web路由的地方。这些路由由RouteServiceProvider在一个包含“web”中间件组的组中加载。现在开始创建一些伟大的事物吧! | */ Route::get('/',[ 'uses' => 'ShopController@getHome', 'as' => 'layouts.master', ]); Route::get('/shop',[ 'uses' => 'ShopController@getIndex', 'as' => 'pages.shop', ]); Route::get('/blog',[ 'uses' => 'ShopController@getblog', 'as' => 'pages.blog', ]); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); Route::GET('admin/home','AdminController@index'); Route::GET('login','Admin\LoginController@showLoginForm')->name('admin.login'); Route::POST('login','Admin\LoginController@login'); Route::POST('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email'); Route::GET('admin-password/reset', 'Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request'); Route::POST('admin-password/reset','Admin\ResetPasswordController@reset'); Route::GET('admin-password/reset/{token}', 'Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');
原因:在Laravel 5.6中,如果在Auth::routes()之前定义了login路由,那么在使用redirect()函数重定向到login路由时,会出现InvalidArgumentException异常,提示"Route [login] not defined."。
解决方法:将定义login路由的代码放在Auth::routes()之前。
具体操作如下:
将以下代码:
Route::GET('login','Admin\LoginController')->name('admin.login');
放在以下代码之前:
Auth::routes();
修改后的代码如下:
Route::GET('login','Admin\LoginController')->name('admin.login');
Auth::routes();
同时,将以下代码用于重定向:
return redirect()->guest(route('admin.login'));
希望这能帮到你。
在Laravel 5.6中出现了"InvalidArgumentException Route [login] not defined."的错误。这个错误的原因是在代码中使用了错误的路由名称,并且使用了错误的重定向方法。解决这个问题的方法是更正路由名称并使用正确的重定向方法。
具体来说,错误的代码中使用了"admin.login"作为路由名称,但实际上应该使用"login"作为路由名称。因此,需要将代码中的:
return redirect()->guest(route('admin.login'));
更正为:
return redirect()->guest(route('login'));
此外,还需要注意,如果在代码中使用了Auth::routes()
方法,可能会导致路由被覆盖。相关的解决方法可以在这里找到。
通过以上的更正和注意事项,可以解决"InvalidArgumentException Route [login] not defined."的错误。