プログラミング学習やフリーランスエンジニア情報を発信していきます。現役フリーランスエンジニア2人で運営してます!

  1. バックエンド

Laravelのリソースコントローラを理解して使ってみよう!

最終更新日:2019/04/02


本記事では、Laravelのリソースコントローラとは何かをわかりやすく解説していきます。

以下の記事の続きです。まだ読んでいない方はぜひご一読ください!

初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!

以下の記事を参考にご活用ください。

Laravelのリソースコントローラってなに?

リソースコントローラは、あるデータの追加、読み取り、更新、削除についての決まり切った処理を簡潔にできる機能です。

例を出したほうがわかりやすいので、ブログ投稿システムにおける記事(Article)モデルについて考えます。

ブログ投稿システムには、一覧表示、個別表示、新規投稿画面、更新画面が必要です。

上の4つの画面に加えて、新規投稿、更新、削除の処理を担当するルートがいるので計7個になります。

まとめると以下のようになります。

HTTP動詞 URL アクション 役割
GET /articles index 一覧表示
GET /articles/create create 新規投稿画面
POST /articles store 新規投稿処理
GET /articles/{article} show 個別ページ表示
GET /articles/{article}/edit edit 更新画面
PUT/PATCH /articles/{article} update 更新処理
DELETE /articles/{article} destroy 削除処理

表にすると多いように感じますが、プログラミングする記述量はすごい少ないです。
それでは、実際にリソースコントローラを使ってみましょう。

リソースコントローラを作成する

それではさっそくリソースコントローラを作成しましょう!

前回の記事で作ったArticleモデルを元に作るので未読の方はチェックしてください!

以下のコマンドを実行してリソースコントローラを作成します。

php artisan make:controller ArticleController --resource --model=Article

このコマンドを実行すると、app/Http/Controllers/ArticleController.php が作成されます。

以下のようになっているはずです。

<?php

namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;

class ArticleController 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  \App\Article  $article
     * @return \Illuminate\Http\Response
     */
    public function show(Article $article)
    {
        //
    }

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

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

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

先ほどご紹介したアクションが全て記述されたコントローラが生成されているのがわかります。

リソースルートを登録する

それではコントローラのアクションをルートとひもづけましょう。

routes/web.php を開いて以下の記述を追加します。

Route::resource('articles', 'ArticleController');

これだけです!これで先ほど紹介した7つのルートが全て登録できます。

実際に確認していきましょう。

ルート定義を確認するために以下のコマンドを打ってみましょう。

php artisan route:list

ちゃんと登録されていますね。

次回はリクエストを処理して、投稿を表示したり、投稿する機能を作っていきましょう!

The following two tabs change content below.

riri

25歳。 Twitter:りりー@ryudoi1 // windii socialというslackチャンネルで質問や雑談等受け付けてるので気軽に参加してください!(もちろん無料です) フリーランスになるまでの過程は こちら

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP