我在routes.php中有以下代码:
Route::controller('/', 'HomeController', array( 'getIndex' => 'home' ));
奇怪的是,当我URL::route('home')
时,它会给我http://domain.com/index
,我希望http://domain.com/
这种情况发生在我有getIndex()
方法名称的任何地方。它只是附加/index
。为什么会这样?如何删除?
答案 0 :(得分:2)
在这种情况下,您无法移除/index
。这是Route::controller()
功能。
以下是有两个问题:issue #1278和issue #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
使得以后更容易找到到特定控制器的路径。