资源控制器让围绕资源构建RESTful模式控制器变得更简单。比如,你可能希望创建一个的控制器,用来管理通过你的应用储存的图片( "photos" )。通过Artisan命令行输入 controller:make
命令以及路由中的 Route::resource
方法快速创建一个控制器。
如果要通过命令行创建控制器,使用如下命令:
php artisan controller:make PhotoController
现在我们可以为这个控制器注册一个资源模式的路由:
Route::resource('photo', 'PhotoController');
这一个路由声明创建了多个路由规则,用来处理各种图像(photo)资源的RESTful操作。同样地,刚刚创建的控制器中已经包含了许多对应的方法。每个方法都带有注释说明,告诉你分别是用来处理什么URI和HTTP动词的。
资源控制器中不同操作的用途
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 |
有时你也许只需要处理其中一部分资源操作:
php artisan controller:make PhotoController --only=index,show
php artisan controller:make PhotoController --except=index
同样,你也许需要在路由中制定那一部分要处理的操作:
Route::resource('photo', 'PhotoController',
array('only' => array('index', 'show')));
Route::resource('photo', 'PhotoController',
array('except' => array('create', 'store', 'update', 'destroy')));
By default, all resource controller actions have a route name; however, you can override these names by passing a names
array with your options:
Route::resource('photo', 'PhotoController', array('names' => array('create' => 'photo.build')));
以上的laravel4.3的文档(https://docs.golaravel.com/docs/4.1/controllers/#resource-controllers)
刚开始的时候我很不明白,这个资源路由到底怎么回事,而控制器中的方法又是怎么定义的,后来慢慢明白了,上面的表格,其实就是控制器里面的方法名字,没有get,没有post,没有其他,简简单单一个单词,就是方法了!
注意:
1.当你在路由中已经定义了资源路由‘photo’,而你又感觉这些自带的方法不能满足你的项目需求,这时候你还是可以自定义一些路由和方法的,切记,此时定义的路由中不能呢再有photo,比如
Route::get('photo/detail','PhotoController@getDetail');这样是严重不对的
2.在页面中也经常使用到路由,这时候可以这样写,
<a href="{{ Route('admcase.index', $iCaseSetId) }}">返回</a>这是找资源路由对应的资源控制器的index方法,顺便带了一个参数