GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{resource} show resource.show
GET /resource/{resource}/edit edit resource.edit
PUT/PATCH /resource/{resource} update resource.update
DELETE /resource/{resource} destroy resource.destroy
public function getIndex()
{
// Route::get('/', 'Controller@getIndex');
}
public function postProfile()
{
// Route::post('/profile', 'Controller@postProfile');
}
Verb Path Action Route Name
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{resource} show resource.show
GET /resource/{resource}/edit edit resource.edit
PUT/PATCH /resource/{resource} update resource.update
DELETE /resource/{resource} destroy resource.destroy
它定义了映射到URI,控制器操作和路由的 the following http请求谓词的路由 . 这允许您使用预定义的路由名称连接到预定义的控制器操作,并将resource_id映射到,如图所示 .
Verb URI Action Route Name
GET /resource/index.blade.php index resource
GET /resource/create.blade.php create resource.create
POST /resource store resource.store
GET /resource/{resource}/show.blade.php show resource.show
GET /resource/{resource}/edit.blade.php edit resource.edit
PUT/PATCH update resource.update
DELETE destroy resource.destroy
它将神奇地将 all 路由连接到ResourceController,以便在控制器中使用的函数名中添加http请求动词(get / post)作为前缀 . 这会将任何URI映射到前面的(get / put)控制器操作(函数),但不会将resource_id映射到或路由名称 .
class UserController extends BaseController {
public function getIndex()
{
//
}
public function postProfile()
{
//
}
public function anyLogin()
{
//
}
}
映射到
Verb URI Action Route Name
GET /index getIndex
POST /profile postProfile
GET /login anyLogin
POST /login anyLogin
DELETE /login anyLogin
5 回答
Laravel资源控制器定义为
Route::controller('users', 'UserController');
,而Restful Controllers定义为Route::resource('photo', 'PhotoController');
.restful controller 遵循宁静资源的标准蓝图,主要包括:
虽然 resource controller 并不像宁静的控制者那样自以为是 . 它允许您直接从您的控制器创建方法,它们都会自动映射到您的路由:
将自动拥有像
Route::post('/profile', 'Controller@postProfile');
这样的路由而不在路由上明确定义它,如果你要避免很长的路由文件,那么它将更像是一个帮助器 .执行
php artisan routes
将显示您的所有路线 . 您可以测试输出并使用该命令查看自动生成的路由 .它们是不同的概念 . 在laravel中,资源控制器定义给定命名资源的所有默认路由,以遵循REST principles .
因此,当您在routes.php中定义资源时,如:
Laravel唯一能做的就是为你定义这条路线:
并期望您在控制器上定义这些方法 . 您也可以只使用/ except子句删除不需要的路由:
更多关于Laravel's documentation .
这只是路由声明的区别 . 而不是使用其中之一,手动定义所有路线 .
它使您的路线文件具有权威性,易于理解和减少错误 .
该文档目前显示RESTful和Resource控制器引用相同的内容 .
它定义了映射到URI,控制器操作和路由的 the following http请求谓词的路由 . 这允许您使用预定义的路由名称连接到预定义的控制器操作,并将resource_id映射到,如图所示 .
术语隐式控制器似乎是指定使用的术语
它将神奇地将 all 路由连接到ResourceController,以便在控制器中使用的函数名中添加http请求动词(get / post)作为前缀 . 这会将任何URI映射到前面的(get / put)控制器操作(函数),但不会将resource_id映射到或路由名称 .
映射到
由您来决定使用哪种方法进行路由 . 关于什么是有用的,如果路由甚至值得它可能造成的混乱,也存在一些争论 .
RESTful Resource Controllers
资源控制器可以更轻松地围绕资源构建RESTful控制器 . 例如,您可能希望创建一个控制器来管理应用程序存储的“照片” . 使用控制器:通过Artisan CLI和Route :: resource方法生成命令,我们可以快速创建这样的控制器 .
要通过命令行创建控制器,请执行以下命令:
现在我们可以向控制器注册一个资源丰富的路由:
此单一路由声明创建多个路由以处理照片资源上的各种RESTful操作 . 同样,生成的控制器已经为每个操作都有了存根方法,并通过注释通知您处理了哪些URI和动词 .
Actions Handled By Resource Controller
http://laravel.com/docs/5.0/controllers#restful-resource-controllers