命名路由和restful控制器问题

时间:2013-12-27 15:03:29

标签: routing laravel

我在routes.php中有以下代码:

Route::controller('/', 'HomeController', array( 'getIndex' => 'home' ));

奇怪的是,当我URL::route('home')时,它会给我http://domain.com/index,我希望http://domain.com/

这种情况发生在我有getIndex()方法名称的任何地方。它只是附加/index。为什么会这样?如何删除?

3 个答案:

答案 0 :(得分:2)

在这种情况下,您无法移除/index。这是Route::controller()功能。

以下是有两个问题:issue #1278issue #2043

  

这已更改,以便action('Controller@getIndex', array('v1' => 'foo'))成为/signup/index/foo而不是/signup?v1=foo。查看添加到每个路线的通配符,它​​们包括v1 ... v5
   - JoostK

解决方法是在Route::controller()之前为其添加路由:

Route::get('/', ['as' => 'home', 'uses' => 'HomeController@getIndex']);

但我不是RESTful或Resourceful控制器的粉丝,所以我不再使用它了,我只写了我所有的路线。

看一下Phil Sturgeon的帖子Beware the Route to Evil

答案 1 :(得分:0)

尽量避免主页的RESTful Controller。尝试将主页分开如下:

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));

对于其余路线,您可以使用RESTful Controller。

Route::controller('/', 'HomeController', array( 'getLogin' => 'Login'));

最佳做法:在应用程序中避免使用RESTful Controller。

为什么?

http://philsturgeon.co.uk/blog/2013/07/beware-the-route-to-evil

答案 2 :(得分:0)

我个人喜欢使用安静的控制器,甚至是主页。我认为将所有简单的静态页面放在一个名为HomeController的安静控制器中,或者其他什么都是很好的做法。我在我做的所有事情中都使用它。要解决您遇到的问题,我只需将链接设为URL::to('/')。保持整洁routes.php使得以后更容易找到到特定控制器的路径。