我可以设置默认路由,因此当我收到/home/index
和/home
之类的请求时,它会重定向到home
控制器的index
操作,就像在其他框架中一样?
我知道我可以逐个设置它们,但我不想为每个请求添加路由,我只想为所有请求使用一条路由。
答案 0 :(得分:3)
基本控制器旁边还有两种其他类型的控制器。您可以通过指定控制器的特殊路径来创建它们。使用这种技术,您不必为每个控制器创建一个路径,只需每个控制器一个。
这将创建具有管理一个资源(如用户或产品)所需的相应HTTP谓词的所有方法。有一个table in the documentation包含哪个预定义路由与控制器的预定义方法匹配,表示您可以对方法执行的操作,如编辑,创建,销毁等:
无论如何,您仍然可以在资源控制器方法和路由旁边添加额外的方法和路由,请记住,在定义资源控制器路由之前必须执行此操作:
//Extra route for the resource controller.
Route::get('home/profile', 'HomeController@profile');
//Resource controller routes.
Route::resource('home', 'HomeController');
我认为这更符合您的需求 创建RESTful控制器将自动为以HTTP动词开头的所有方法创建路由。
Route::controller('home', 'HomeController');
在此之后,您可以在HomeController
:
public function getIndex() {
//Code.
}
public function postProfile() {
//Code.
}
框架将自动为它们创建路由,因此您可以通过HTTP POST访问postProfile()
到/home/profile
路由。您也可以通过HTTP GET访问getIndex()
到/home/index
。
documentation也提到:
索引方法将响应控制器处理的根URI。
在我们的情况下,这意味着您也可以通过getIndex()
和/home/index
路径访问/home
方法。
如果你有一个方法有多个单词(一个单词以驼峰大小写字母开头),那么生成的路线在单词之间将有一个-
,因此方法getAdminProfile()
将有一个路径叫home/admin-profile
。
正如我在资源控制器部分所说,您仍然可以创建常规路由,只需确保在创建RESTful控制器路由之前创建它们。
创建路由:Route::controller('home', 'HomeController');
调用您的根方法getIndex()
并使用HTTP谓词为每个其他方法添加前缀,例如userTool()
应该成为getUserTools()
。
答案 1 :(得分:2)
如果您使用Route::controller()
,只需为index()
方法getIndex()
命名。