コントローラについて

2019/08/06

MVCモデルはフレームワークを利用した開発をする際に用いられる開発手法の一つです。

LaravelもMVCモデルで設計されています。

今回はMVCモデルのコントローラについてエントリーします。

 

コントローラとは

コントローラはモデルとビューの橋渡しをする存在です。

主に2つの役割を持っています。

  • ルートから受け取った情報をモデルに処理をお願いする
  • モデルから受け取った情報をビューに表示する

具体的にはモデルからDBにアクセスし、取得したデータをコントローラで加工してビューに渡すと行ったことや、ビューからのデータをモデルに渡し、DBに保存をしたりします。

またバリデーション(データが正当かどうかを判断する機能)もコントローラに記述します。

 

作成手順

1.ルートに記述

コントローラを作成する前に、ルートに新しく作るコントローラを記述しておきます。


Route::get('hello','HelloController@getIndex');

ポイント

Route::resourceを指定することでCRUDルーティングを一度に行うことができます。
(※記述がワンライナーだけで済みます)


// ワンライナーの記述で以下のメソッドを呼び出すことができます。
Route::resource('/message', 'MessageController');

Verb URI Action 呼び出されるメソッド
GET /message index MessageController@index
GET /message/create create(新規作成) MessageController@create
POST /message store(保存) MessageController@store
GET /message/{id} show(詳細表示) MessageController@show
PUT/PATCH /message/{id} update(更新) MessageController@update
DELETE /message/{id} destroy(削除) MessageController@destroy

 

2.スケルトン作成

コントローラは artisan コマンドを使って作成します。


$ php artisan make:controller HelloController

// Route::resourceを指定する場合
$ php artisan make:controller HelloController --resource

ポイント

コントローラはアッパーキャメルケースで記述するのがお作法です。
(※ちなみにアッパーで記述しなくても動きます。)

記法名 備考
スネークケース/td>

example_case すべて小文字で複合語のスペースをアンダースコアで区切る
ローワーキャメルケース exampleCase 先頭を小文字で書き始め、複合語のスペースをなくし要素の先頭は大文字にする
アッパーキャメルケース(パスカルケース) ExampleCase 先頭を大文字で書き始め、複合語のスペースをなくし要素の先頭は大文字にする

上記のコマンドを実行すると app/Http/Controllers/HelloController.php ファイルが作成されます。

 

3.中身を記述

artisanコマンドでスケルトンを作成すると、クラスは自動で生成されます。

以下のようにメソッドだけ追加します。


:
class HelloController extends controller
{
  public function getIndex()
  {
    return view('hello');
  }
}

コントローラからビューへの変数の受け渡しと展開方法については別の記事でまとめました。

 
コントローラについては以上です。

 
Laravelのコントローラについてもっと理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。

ポイント
コントローラ関連の掲載ページ

Chapter 2 ルーティングとコントローラ
2.1 ルーティング
2.2 コントローラの利用

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識