多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
资源控制器可让你无痛建立和资源相关的 RESTful 控制器。例如,你可能希望创建一个控制器,它可用来处理针对你的应用程序所保存相片的 HTTP 请求。我们可以使用 make:controller Artisan 命令,快速创建这样的控制器: `php artisan make:controller PhotoController` 接着,我们注册一个指向此控制器的资源路由: `Route::resource('photo', 'PhotoController');` 此单一路由声明创建了多个路由,用来处理各式各样和相片资源相关的 RESTful 行为。同样地,产生的控制器已有各种和这些行为绑定的方法,包含用来通知你它们处理了那些 URI 及动词。 由资源控制器处理的行为 | 动词 | 路径 | 行为 | 路由名称 | |-----|-----|-----|-----| | GET | /photo | 索引 | photo.index | | GET | /photo/create | 创建 | photo.create | | POST | /photo | 保存 | photo.store | | GET | /photo/{photo} | 显示 | photo.show | | GET | /photo/{photo}/edit | 编辑 | photo.edit | | PUT/PATCH | /photo/{photo} | 更新 | photo.update | | DELETE | /photo/{photo} | 删除 | photo.destroy | ### 自定义资源路由 除此之外,你也可以指定让路由仅处理一部分的行为: ~~~ ~~~ Route::resource('photo', 'PhotoController', ['only' => ['index', 'show']]); Route::resource('photo', 'PhotoController', ['except' => ['create', 'store', 'update', 'destroy']]); ~~~ ~~~ 所有的资源控制器行为默认都有个路由名称。然而你可在选项中传递一个 names 数组来重载这些名称: ~~~ ~~~ Route::resource('photo', 'PhotoController', ['names' => ['create' => 'photo.build']]); ~~~ ~~~ ### 处理嵌套资源控制器 在你的路由声明中使用「点」号来「嵌套化」资源控制器: ~~~ ~~~ Route::resource('photos.comments', 'PhotoCommentController'); ~~~ ~~~ 此路由会注册一个「嵌套的」资源,可透过像 photos/{photos}/comments/{comments} 这样的 URL 来访问。 ~~~ ~~~ class PhotoCommentController extends Controller { /** * 显示指定照片的评论。 * * @param int $photoId * @param int $commentId * @return Response */ public function show($photoId, $commentId) { // } } ~~~ ~~~ ### 在资源控制器中加入其他的路由 除了默认的资源路由外,若你还需要在资源控制器中加入其他路由,应该在调用 Route::resource 之前先定义它们: ~~~ ~~~ Route::get('photos/popular', 'PhotoController@method'); Route::resource('photos', 'PhotoController'); ~~~ ~~~