【问题标题】:Laravel 4 - route is not defined, on redirectLaravel 4 - 路由未定义,重定向
【发布时间】:2013-09-19 04:57:03
【问题描述】:

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

这是我的路线文件:

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

有人有想法吗?

【问题讨论】:

  • 试试Redirect::to('/manager')
  • 我试过了,但它只是返回到我已经在的页面

标签: php routing laravel laravel-4


【解决方案1】:

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

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

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

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

然而,

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

表示您正在将流重定向到名为“manage”的路由。

要对错误进行排序,

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

解决方案:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      当您使用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

      【讨论】:

      • 我照你说的做了,但还是被重定向回原来的页面
      • 那么,也许你已经在被重定向的页面上。
      • 哈哈,不,我不是,但这需要检查一下,我也这样做了:)
      猜你喜欢
      • 2017-05-15
      • 2021-07-19
      • 2013-09-22
      • 2013-09-14
      • 2023-03-15
      • 2018-06-30
      • 2018-12-16
      • 2014-09-20
      相关资源
      最近更新 更多