12

我正在尝试在登录后设置一个简单的重定向。部分登录有效,但重定向失败,因为它说路由不存在。

这是我的路线文件:

Route::any('/', array('uses' => 'UsersController@login'));

Route::any('/manage', array('uses' => 'AdminController@showWelcome'));

如果我去http://example.com/manage .. laravel 的标志就在那里,我的其他页面也很好。

但是当我这样做时:

Redirect::route('/manage');

页面死了说:

Route [/manage] not defined

有人有想法吗?

4

3 回答 3

17

使用方法时应该使用路由名称Redirect::route,在这种情况下,您必须使用名称声明路由,即

Route::any('/manage', array('as' => 'manage', 'uses' => 'AdminController@showWelcome'));

这里,asvalue 是 的名称route,所以,现在你可以使用

return Redirect::route('manage'); // 'manage' is the name of the route to redirect

或者,或者,您可以使用Redirect::to('url')方法,即

return Redirect::to('/manage'); // '/manage' is the url to redirect

选中Redirect to a named Routenamed routes

于 2013-09-14T17:50:30.067 回答
1

这个错误“Route [manage] not defined”是因为路由名称“manage”没有定义。

路由名称和路由路径是两个不同的东西。

并且您已将路由路径声明为管理员,

Route::any('manage', 'AdminController@showWelcome');

然而,

return redirect()->route('manage');

表示您将流重定向到名为“管理”的路由。

要对错误进行排序,

在下面使用 'as' => 'route_name' 定义的数组中定义路由名称“manage”,如下所示。

解决方案 :

Route::any('manage', [
   'as' => 'manage',
   'uses' => 'AdminController@showWelcome'
]);

请参考链接:https ://laravel.com/docs/master/routing#named-routes

于 2016-03-14T08:53:16.123 回答
-2

使用 return Redirect::intended('manage');

于 2014-10-14T10:17:18.073 回答