ここからはそのコントローラーを実際に作成し、各画面(フォーム・確認・完了)や保存処理に必要なメソッドを用意していきます。
フォームの入力から確認、保存、完了といった各フェーズを担うコントローラーを作ることで、アプリケーションがより具体的に形を成していきます。
実装はシンプルな構成から始めて、後の章でバリデーションやモデルとの連携、共通化などを加えていくことで、Laravelらしい堅牢かつ拡張性のある設計へと進化させていきます。
コントローラーとは何か?
コントローラーは、Laravelの「MVC構造」の中で “C”=Controller(制御)を担います。
簡単に言えば、ユーザーの操作(リクエスト)に応じて処理を振り分ける司令塔のような存在です。
例えば、ユーザーが/contactにアクセスした場合、コントローラーは「フォームの入力画面を表示する」という指令を出します。
また、ユーザーがデータを入力して「確認へ」ボタンを押した場合、コントローラーはバリデーションチェックを行って確認画面を表示する、という指令を出します。
このように、URLに応じて何をすべきか判断し、モデルやビューと連携して画面の流れを整えてくれる役割がコントローラーです。
処理の流れ
ユーザーがアクションを起こした場合の処理の流れは以下の通りになります。
[ユーザー] → URLにアクセス
↓
[ルート] → web.php で Controller を呼び出す
↓
[Controller] → 必要な処理を実行(モデル/ビュー連携)
↓
[View] → 処理結果を画面に表示する
1. pullとブランチの作成
それでは、作業に入る前に前回mergeしたメインブランチを更新しておきましょう。
今回で3回目ですが、少し慣れてきたでしょうか?
# ブランチをpullする
git pull origin main
以上で完了です。mainブランチが前章で作成されたブランチと同じになれば、次に進みます。
ブランチは以下のように作成するのでしたね。
git switch -C make-controller
今回はコントローラーを作成するので、make-controllerと言う名前のブランチを作成しました。ブランチ名は任意となりますので、お好きなブランチ名を付けて構いません。
2.コントローラーの作成コマンド
まずは artisan コマンドで ContactController を作成します:
php artisan make:controller ContactController
このコマンドにより、app/Http/Controllers/ContactController.php が生成されます。
初期状態のファイル構成
生成されたコントローラーの初期構造は以下のようになっています:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
//
}
この時点では空の状態なので、必要なメソッド(index, contact, confirm など)を順に追加していきます。
まずは第一段階として以下のようなコードを追加してみましょう。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function index()
{
return view('index');
}
public function show($id)
{
return view('show', compact('id'));
}
public function contact()
{
return view('contact');
}
public function confirm(Request $request)
{
return view('confirm');
}
public function store(Request $request)
{
return view('thanks');
}
public function thanks()
{
return view('thanks');
}
}
コントローラー内メソッドの構成と役割
function index()
このメソッドはweb.phpから(/ページ)にユーザーがアクセスした場合に発生するメソッドとなります。
return view('index');はメソッドが起動したときに、viewのindexを返す、と言う意味になります。
ですので、ユーザーが(/ページ)にアクセスした場合、resource/views/index.blade.phpのファイルが表示されます。
以下のメソッドも書いてある文章はほぼ同じ意味となっておりますので、省略いたします。
function show($id)メソッドのみ、($id)という引数が用意されていますが、こちらについては詳細ページを作成するにて解説をいたします。
今はただ楽しみにしてお待ちくださいませ。
3.Git push
以上が完了したら、毎回恒例のGitを共有しておきましょう。
git add -A
git commit -m "コメントを入力する"
git push origin make-controller
git pushが無事完了したら、GitHub上で操作を行います。
pull requestが来ているので、mergeしましょう。