Laravel 4 - 路由未定义,重定向

时间:2013-09-14 17:19:30

标签: php routing laravel laravel-4

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

这是我的路线档案:

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

有人有想法吗?

3 个答案:

答案 0 :(得分:16)

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

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

此处,as值是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

答案 1 :(得分:1)

此错误"路由[manage]未定义"是因为路线名称" manage"没有定义。

路线名称和路线路径是两回事。

您已将路径路径声明为admin,

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

然而,

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

表示您将流重定向到名为" manage"的路由。

要对错误进行排序,

定义路线名称" manage"如下所示,在下面定义的数组中使用' as' => ' ROUTE_NAME'

解决方案:

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

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

答案 2 :(得分:-2)

使用return Redirect :: expected(' mannage');