本記事では、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
ちゃんと登録されていますね。
次回はリクエストを処理して、投稿を表示したり、投稿する機能を作っていきましょう!

WINDII

最新記事 by WINDII (全て見る)
- Canvaが最高すぎる。使い方を完全ガイド【チュートリアルあり】 - 2019年5月14日
- 人気急上昇中のLaravelをはじめよう!【徹底解説】 - 2019年4月23日
- Laravelの認可を理解して実装してみよう! - 2019年3月29日
この記事へのコメントはありません。