資源控制器

Laravel 資源路由將典型的 CRUD 路由分配給具有單行程式碼的控制器。例如,你可能希望建立一個控制器來處理應用程式儲存的照片的所有 HTTP 請求。使用 make:controller Artisan 命令,我們可以快速建立這樣的控制器:

php artisan make:controller PhotoController --resource

此命令將在 app/Http/Controllers/PhotoController.php 生成一個控制器。控制器將包含每個可用資源操作的方法。

資源控制器外觀的示例

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PhotoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

資源控制器的示例共享下表中方法名稱。

接下來,你可以向控制器註冊資源豐富的路由:

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

此單一路由宣告建立多個路由來處理資源上的各種操作。生成的控制器已經有針對每個操作的存根方法,包括通知你它們處理的 HTTP 謂詞和 URI 的註釋。

資源控制器處理的操作

動詞 URI 行動 路線名稱
得到 /photos 指數 photos.index
得到 /photos/create 建立 photos.create
POST /photos 商店 photos.store
得到 /photos/{photo} 節目 photos.show
得到 /photos/{photo}/edit 編輯 photos.edit
PUT / PATCH /photos/{photo} 更新 photos.update
刪除 /photos/{photo} 破壞 photos.destroy