見出し画像

Laravel 学習記録 #014 リソースコントローラーを学ぶ

Laravelのリソースコントローラーについて学習したものをまとめてます。

リソースコントローラーについて

  • EloquentModelをリソースと考えたときに、大体これやるよねってアクションをまとめたもの

  • CRUD操作などを一気に作成してくれる

使ってみる

コントローラー作成

以下のコマンドで作成します。
--resourceをオプションとして追加

php artisan make:controller ResourceController --resource

すると、コントローラーにアクションがデフォルトで用意されます。
index(一覧表示)
create(新規作成フォーム表示)
store(新規作成処理)
show(単一リソース表示)
edit(編集フォーム表示)
update(更新処理)
destroy(削除処理)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ResourceController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }
}


ルート設定

これらをweb.phpでルート設定するには
以下のようにします。
resourceメソッドにindexで入ってくるURLだけ設定でOKです。

<?php

use App\Http\Controllers\ResourceController;

Route::resource('resource', ResourceController::class);

個人的にはこれ1つでまとめられるのがすごくうれしい。
しっかりルート設定されているかを確認します。

php artisan route:list


  GET|HEAD        resource .... resource.index › ResourceController@index
  POST            resource .... resource.store › ResourceController@store
  GET|HEAD        resource/create .... resource.create › ResourceController@create
  GET|HEAD        resource/{resource} .... resource.show › ResourceController@show
  PUT|PATCH       resource/{resource} ..... resource.update › ResourceController@update
  DELETE          resource/{resource} .... resource.destroy › ResourceController@destroy
  GET|HEAD        resource/{resource}/edit .... resource.edit › ResourceController@edit


こんな感じで、設定されているようでした。
既存のプロジェクトだとガンガン使うこともなさそうですが
新規プロジェクトの場合は、考慮に入れておきたいですね。



この記事が気に入ったらサポートをしてみませんか?