Laravel 5.1路由未定义重定向

时间:2016-12-30 20:50:12

标签: php routes laravel-5.1

当我尝试重定向我的注销时,

需要询问错误

这是UserController:

public function logout()
{

    Auth::logout();
    return redirect()->route('auth/login');
}

这是我的路线:

Route::get('/', function () {
    return view('welcome');
});
// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');

Route::get('testing', 'UserController@test');
Route::get('logout', 'UserController@logout');

我认为,在路线上一切正常,我正确定义了登录(如Laravel文档)

但仍然会出现此错误:

InvalidArgumentException in UrlGenerator.php line 306:
Route [auth/login] not defined.

你能解决什么问题吗?我犯了什么错误吗?

非常感谢,祝你有愉快的一天!

2 个答案:

答案 0 :(得分:5)

route方法需要名称,而不是URI。所以你需要为你的路线命名。

像这样:

Route::get('auth/login', ['as' => 'login', 'uses' => 'Auth\AuthController@getLogin']);

或者:

Route::get('auth/login', 'Auth\AuthController@getLogin')->name('login');

现在您可以致电return redirect()->route('login');

请参阅Named Routes的文档。

或者,您只需在redirect方法中提供URI,如下所示:

return redirect('auth/login');

如果您更改此端点,这会破坏。我建议命名你的路线并在你的代码中使用它们。

答案 1 :(得分:1)

将您的return redirect()->route('auth/login');更改为

return redirect('auth/login');

return Redirect::to('auth/login');