【Laravel】Route::resourceとは?resouceメソッドの意味と使い方

laravel-prograshi(プロぐらし) Laravel
記事内に広告が含まれていることがあります。
[PR]

Laravelのルートで使われるRoute::resourceについて、

Route::resourceはリソースコントローラという特殊なコントローラを作成し、そのルートを登録するためのメソッド


リソースコントローラとは?

DBへのCRUD操作を行うために必要なアクション(メソッド)が定義されているコントローラ。

CRUD操作が必要なページの処理を記述するための叩き台。

▼CRUDとは?
Create(登録)、Read(読み出し)、Update(変更)、Delete(削除)の4つの機能のこと。


リソースコントローラの作成方法

$ php artisan make:controller リソースコントローラ名 --resource

--resourceはショートオプションの-rでもOK。



▼実行例

$ php artisan make:controller TestResourceController -r
Controller created successfully.

app > Http > Controllers > TestResourceController.php が生成される。


リソースコントローラの内容

(1) public function index()
(2) public function create()
(3) public function store(Request $request)
(4) public function show($id)
(5) public function edit($id)
(6) public function update(Request $request, $id)
(7) public function destroy($id)

上記の7つのアクション(メソッド)が記載されている。
実際の処理は自分で記述する。CRUD操作に必要なメソッドの側を用意してくれている。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestResourceController 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メソッドで登録できる。

Route::resource('$URI', 'リソースコントローラー名')

Route::resource('aaas', 'TestResourceController');



▼作成したルートの確認

$ php artisan route:list

+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+
| Domain | Method    | URI               | Name          | Action                                              | Middleware |
+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+
|        | POST      | aaas              | aaas.store    | App\Http\Controllers\TestResourceController@store   | web        |
|        | GET|HEAD  | aaas              | aaas.index    | App\Http\Controllers\TestResourceController@index   | web        |
|        | GET|HEAD  | aaas/create       | aaas.create   | App\Http\Controllers\TestResourceController@create  | web        |
|        | DELETE    | aaas/{aaa}        | aaas.destroy  | App\Http\Controllers\TestResourceController@destroy | web        |
|        | PUT|PATCH | aaas/{aaa}        | aaas.update   | App\Http\Controllers\TestResourceController@update  | web        |
|        | GET|HEAD  | aaas/{aaa}        | aaas.show     | App\Http\Controllers\TestResourceController@show    | web        |
|        | GET|HEAD  | aaas/{aaa}/edit   | aaas.edit     | App\Http\Controllers\TestResourceController@edit    | web        |
+--------+-----------+-------------------+---------------+-----------------------------------------------------+------------+

各ルートに対してアクションが指定されている。


ビューを開く

あとは、各アクションの中に呼び出すビューを指定すればいい。

public function index()
    {
        return view('users');
    }

/aaasにアクセスすると、users.blade.phpが表示される。

各アクション毎に対応するビューや処理を指定していけば完了。


まとめ

Route::resourceはCRUD操作用のアクションの叩き台が記述されたコントローラー(リソースコントローラーと呼ぶ)を登録するためのメソッド。


タイトルとURLをコピーしました