#コントローラーの説明
まずはこの画像をみてください
ルーティングの先にあるコントローラーを説明していきます。
コントローラーはユーザーから送られてきた指令に対してどのようにアクションするかを決める場所です。
要するに総合窓口ですね。。。市役所とか電話すると「そのご相談しでしたら○○課ですね〜」って案内する人いるじゃないですか?それがコントローラーです。
ルーティングから直接ビューを見せることはたまにありますが、基本的にコントローラーを介して見せる場合が多いです
(モデルはルーティングから直接見せることはほぼない)
#コントローラーの記法、RestFulコントローラー(リソースコントローラー)について
基本的な記法を以下に書いておきます
//HomeController
public function top(){
return view('home.top');
}
このソースコードは「top」という命令がきたら、「home」フォルダーの中にある「top」という名前のファイルを表示してくださいね、というコントローラーです。これが基本中の基本です。
これ以外で基本的なところで言えば
1、リストを表示させる
2、入力した情報をデータベースに保存させる
3、保存したデータを編集する
4、保存したデータを削除する
...etc
がありますが
「いや〜、ルーティングに対していちいちコントローラー書いてるのめんどくさいっすよ。っていうかルーティングもコントローラーと同じ数書くんですか〜?」
という方に朗報があります。それはRestFulなコントローラー(リソースコントローラー)です
(以下、リソースコントローラーで統一します。)
簡単に説明するとルーティングにを一回書いたらその中に大体の人が使うであろうルートとコントローラーを作ってくれると言う代物です。公式が用意してくれてるわけですね。。。
用意してくれている内容は以下になります。
※ほぼ公式からの抜粋
動詞 | URI | アクション | ルート名 |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{id} | show | photos.show |
GET | /photos/{id}/edit | edit | photos.edit |
PUT/PATCH | /photos/{id} | update | photos.update |
DELETE | /photos/{id} | destroy | photos.destroy |
こちらはルーティングのことが記載されている表ですが、もちろんこれに合わせたコントローラーも自動生成されてます。(リソースコントローラーの自動生成の仕方は後述)
上から一つづつ説明していきます。
####①index####
保存したデータのリストを表示する時に使うアクション
####②create####
データを保存するためのビューを表示させるためのアクション
####③store####
送られてきたデータを保存するためのアクション(基本的にcreateから送られて来る)
####④show####
一つのデータの詳細を表示するアクション
####⑤edit####
一つのデータを編集するためのビューを表示するためのアクション
####⑥update####
送られてきた「こう言う風に変更してくれ」と言う命令をきくアクション(基本的にeditから送られて来る)
####⑦destroy####
送られてきたデータを削除するアクション
↑で説明したものは基本的にこう言う風に使われますよと言うものの例で必ずしもこれにのっとった使い方をしろと言うわけではないです、ただこの通りに進めて行けば迷わずに開発が進められるので私はこのリソースコントローラーを使って開発をすることにしました。あと何より記述が少なくて済む!
#リソースコントローラーを使っていく#
では勿体ぶって申し訳ございません、リソースコントロラーの自動生成をしていきます。
まずはじめに以下のコマンドをterminalで入力しましょう
$ php artisan make:controller PhotoController --resource
ちなみに公式にのっとってやっているのでコントローラー名(Photo)のところは好きに変えてOKです。
これを入力するだけで↑で説明した7つのコントローラーが自動生成されます。
あとはルーティングを書いてきますが。。。
Route::resource('photos', PhotoController::class);
こちらもこれを書くだけでこの中に7つのルーティングが内包されています。
いや〜少ない記述で便利。
ここから使い方について説明していこうと思ったのですがこの時点で長くなりすぎてしまったので次回にしたいと思います。
#次回以降の予定#
①コントローラーの残りの説明
②Viewの詳しい説明
③Viewの継承(@extend)について
④Bootstrapについて
ちゃんと説明しようと思うとつい長くなりがちですね。。。
あっ、ちなみにこの記事で至らない点等ございましたら是非、ご指導ご鞭撻ください。