現役フリーランスエンジニアが運営するテックメディア。日々の業務で得た知識を発信していきます!

  1. バックエンド
  2. 14383 view

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.
WINDII

WINDII

WINDII(ウィンディ)は、フリーランスエンジニアが運営するテックメディアです。 日々の業務で得た知見を、皆さんに役立つコンテンツにして発信していくので応援よろしくお願いします! また、Slackで無料コミュニティも運営しています。たくさんのエンジニアが参加していて、プログラミングの相談や雑談などをしている楽しいコミュニティなので、興味ある方はぜひお気軽にご参加ください。 Slackコミュニティはこちらから

バックエンドの最近記事

  1. 人気急上昇中のLaravelをはじめよう!【徹底解説】

  2. Laravelの認可を理解して実装してみよう!

  3. Laravelのシーティング(Seeding)機能をマスターしよう!

  4. Laravelのメール確認機能を設定してみよう!

  5. Laravelの認証機能を設定してみよう!

関連記事

コメント

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

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

PAGE TOP