有人可以解释一下Laravel中RESTful控制器和资源控制器之间的区别吗?我也有一些问题 -
什么时候我应该使用RESTful控制器和资源控制器?
RESTful控制器和资源控制器是否有任何Controller操作的命名约定?
如果我使用RESTful控制器,我如何为控制器定义路由?
对于构建控制器方法最好的API?
maj*_*rif 15
Laravel资源控制器定义为Route::controller('users', 'UserController');
Restful Controllers定义为Route::resource('photo', 'PhotoController');
.
一个宁静的控制器遵循标准蓝图,以获得一个宁静的资源,主要包括:
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
Run Code Online (Sandbox Code Playgroud)
虽然资源控制器不像宁静的控制器那样自以为是.它允许您直接从您的控制器创建方法,它们都会自动映射到您的路由:
public function getIndex()
{
// Route::get('/', 'Controller@getIndex');
}
public function postProfile()
{
// Route::post('/profile', 'Controller@postProfile');
}
Run Code Online (Sandbox Code Playgroud)
将自动拥有路由,Route::post('/profile', 'Controller@postProfile');
而不是在路由上明确定义它,更多的是帮助,如果你要避免很长的路由文件.
做php artisan routes
会告诉你所有的路线.您可以测试输出并使用该命令查看自动生成的路由.
它们是不同的概念。在 laravel 中,资源控制器为给定的命名资源定义了所有默认路由,以遵循REST 原则。
因此,当您在 routes.php 中定义资源时,例如:
Route::resource('users', 'UsersController');
Run Code Online (Sandbox Code Playgroud)
Laravel 唯一要做的就是为你定义这个路由:
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
Run Code Online (Sandbox Code Playgroud)
并期望您在控制器上定义这些方法。您还可以使用 only/except 子句来删除不需要的路由:
Route::resource('user', 'UserController', ['except' => ['destroy']]);
Run Code Online (Sandbox Code Playgroud)
有关Laravel 文档的更多信息。
归档时间: |
|
查看次数: |
11122 次 |
最近记录: |