RESTful 資源控制器

2018-02-24 15:51 更新

資源控制器可讓你無痛建立和資源相關(guān)的 RESTful 控制器。例如,你可能希望創(chuàng)建一個(gè)控制器,它可用來處理針對(duì)你的應(yīng)用程序所保存相片的 HTTP 請(qǐng)求。我們可以使用 make:controller Artisan 命令,快速創(chuàng)建這樣的控制器:

php artisan make:controller PhotoController

接著,我們注冊(cè)一個(gè)指向此控制器的資源路由:

Route::resource('photo', 'PhotoController');

此單一路由聲明創(chuàng)建了多個(gè)路由,用來處理各式各樣和相片資源相關(guān)的 RESTful 行為。同樣地,產(chǎn)生的控制器已有各種和這些行為綁定的方法,包含用來通知你它們處理了那些 URI 及動(dòng)詞。
由資源控制器處理的行為

動(dòng)詞 路徑 行為 路由名稱
GET /photo 索引 photo.index
GET /photo/create 創(chuàng)建 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']]);

所有的資源控制器行為默認(rèn)都有個(gè)路由名稱。然而你可在選項(xiàng)中傳遞一個(gè) names 數(shù)組來重載這些名稱:

Route::resource('photo', 'PhotoController',
                ['names' => ['create' => 'photo.build']]);

處理嵌套資源控制器

在你的路由聲明中使用「點(diǎn)」號(hào)來「嵌套化」資源控制器:

Route::resource('photos.comments', 'PhotoCommentController');

此路由會(huì)注冊(cè)一個(gè)「嵌套的」資源,可透過像 photos/{photos}/comments/{comments} 這樣的 URL 來訪問。

class PhotoCommentController extends Controller {

    /**
     * 顯示指定照片的評(píng)論。
     *
     * @param  int  $photoId
     * @param  int  $commentId
     * @return Response
     */
    public function show($photoId, $commentId)
    {
        //
    }

}

在資源控制器中加入其他的路由

除了默認(rèn)的資源路由外,若你還需要在資源控制器中加入其他路由,應(yīng)該在調(diào)用 Route::resource 之前先定義它們:

Route::get('photos/popular', 'PhotoController@method');

Route::resource('photos', 'PhotoController');
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)