お問い合わせフォームのモデルを定義し、保存対象のデータ構造を明示できたことで、少しずつアプリケーションらしい形が見えてきました。
ここからは、ユーザーのアクセスに応じてどんな処理を起動するかを定義する、Laravelのルーティング機能に進みます。
ルーティングとは、簡単にいえば「どのURLにアクセスしたとき、どの処理を実行するか?」を決める地図のようなもの。
Laravelでは routes/web.php というファイルに、画面表示やフォーム送信に関するルート(道順)を記述していきます。
この章では、web.php の基本的な書き方から、フォーム機能に必要なルートの整理、実際のControllerとの接続方法までを解説します。
入力画面 → 確認画面 → 保存処理 → 完了画面というフォームの一連の流れを、コード上でどう表現するかが見えてくるはずです。
アプリケーションの「入り口」として、ユーザーの行動とLaravelの処理がつながる瞬間を一緒に紐解いていきましょう。
ルーティングとは何か?
Laravelにおけるルーティング(Routing)とは、ユーザーがアクセスするURLに応じて、どの処理(メソッドやController)を実行するかを決定する仕組みのことです。
これはちょうど「住所に対応する配達先」を決めるようなもの。
ユーザーが example.com/contact にアクセスしたとき、それに対応する処理をLaravelが見つけて実行するために必要なルールです。
Laravelは「URL → 処理」への自動対応はしないため、明示的なルール(ルーティング)が必要となります
URLをもとに、どのController・どのメソッドを呼ぶかを開発者が設計することで、構造化されたアプリケーションが作れる
Laravelルーティングの位置づけ
| 要素 | 役割 |
|---|---|
| ユーザーのURL | 例:/contact |
| ルーティング | URLと実行処理(Controller)を対応付ける設定 |
| Controller | 具体的な処理内容(画面表示・保存など)を定義 |
| View | ユーザーに返す画面(Bladeテンプレートなど) |
ルーティングはこの中でも「アプリケーションの入り口」として、最初に呼ばれる重要な役割を担っています。
ルーティングファイルの場所
Laravelでは、画面表示に関するルートはすべて以下のファイルに定義されます。
routes/web.php
このファイルが、ユーザーのアクセスと処理をつなぐ「案内図」になります。
routes/web.php ファイルの役割
routes/web.php は、Laravelアプリケーションの画面表示やフォーム送信など、Webブラウザからのアクセスに対応するルートを定義する場所です。
- 画面表示・フォーム送信など →
web.php - API通信(外部システムとの連携など) →
api.php
💡 Laravelでは目的別にルーティングファイルが分かれており、web.php は HTML画面を返す処理が中心です。
初期構成の確認
Laravelプロジェクトを新規作成すると、web.php ファイルは以下のような状態で始まります
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get()はブラウザからURLにアクセスされたときの処理を定義/はトップページを示すパスview('welcome')はresources/views/welcome.blade.phpを返す処理
HTTPメソッドごとの使い分け
| メソッド | 用途 | 使用例 |
|---|---|---|
GET |
ページの表示・データの取得 | 入力フォーム表示 / 完了画面 / 一覧・詳細表示など |
POST |
データの送信・登録処理 | フォーム送信 / バリデーション確認 / 保存処理 |
PUT |
データの更新(編集) | 編集画面での送信 |
DELETE |
データの削除処理 | 削除ボタンから送信 |
💡 今回のフォームでは GET と POST のみを使用しています
1. pullとブランチの作成
まずは、作業に入る前に前回mergeしたメインブランチを更新しておきましょう。この作業は毎回行います。
なぜ、毎回書いてあるのかというと、私自身もブランチを切り忘れることがあるため、定着させるために書いてあります。
# 現在のブランチがmainブランチではない場合
git switch main
# ブランチをpullする
git pull origin main
以上で完了です。mainブランチが前章で作成されたブランチと同じになれば、次に進みます。
ブランチは以下のように作成するのでしたね。
git switch -C make-routes
今回はルートを作成するので、make-routesと言う名前のブランチを作成しました。ブランチ名は任意となりますので、お好きなブランチ名を付けて構いません。
2.ルートファイルの作成
それでは実際にルートファイルの作成に進んでいきましょう。
READMEで作成した機能一覧を覚えていますか?機能一覧に書かれた内容をもとに、ページを作成していきます。
今回作成するルートは以下の通りです。
| メソッド | URL | アクション | 説明 |
|---|---|---|---|
| GET | / |
index |
トップページ or 一覧表示 |
| GET | /show/{id} |
show |
個別のお問い合わせ詳細画面 |
| GET | /contact |
contact |
入力フォーム表示 |
| POST | /contact/confirm |
confirm |
入力内容の確認(バリデーション後) |
| POST | /contact/store |
store |
データベース保存処理 |
| GET | /thanks |
thanks |
保存完了後の完了画面表示(GETに変更) |
Laravelでは、ユーザーがURLにアクセスしたときに、どの処理(Controllerのメソッド)を呼び出すかを定義するのがルーティングファイルです。
画面表示やフォーム送信など、Webブラウザと関わるルートはすべて routes/web.php に記述します。
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ContactController;
// トップページ(一覧表示など任意用途)
Route::get('/', [ContactController::class, 'index']);
// 個別表示(ID指定)
Route::get('/show/{id}', [ContactController::class, 'show']);
// 入力フォーム表示(GET)
Route::get('/contact', [ContactController::class, 'contact']);
// 入力内容の確認処理(POST)
Route::post('/contact/confirm', [ContactController::class, 'confirm']);
// データ保存処理(POST)
Route::post('/contact/store', [ContactController::class, 'store']);
// 完了画面表示(GET)
Route::get('/thanks', [ContactController::class, 'thanks']);
ルート一覧と解説
Route::get('/', [ContactController::class, 'index']);
- トップページへのアクセス時に呼び出されるルート
index()メソッドでは、登録されたお問い合わせ一覧を取得・表示する処理が想定されます(一覧画面の役割)- 開発初期は仮の表示として
welcomeページ、後にcontacts.indexビューなどへ変更する
Route::get('/show/{id}', [ContactController::class, 'show']);
- IDを指定して、特定のお問い合わせ内容を表示するページ
show()メソッドでContact::find($id)を実行し、該当レコードを取得- 管理画面や確認画面などへの応用にもつながるルートです
Route::get('/contact', [ContactController::class, 'contact']);
- 入力フォーム画面の表示
- ユーザーが初めてアクセスして情報を入力するためのルート
- ここでは
contact()メソッドを使ってcontact.formビューを返します
Route::post('/contact/confirm', [ContactController::class, 'confirm']);
- 入力された内容を確認画面に渡す処理
- バリデーションを通過したデータを
contact.confirmビューに表示 POSTメソッドなのでフォーム送信によって起動されます
Route::post('/contact/store', [ContactController::class, 'store']);
- 確認画面からの保存処理を担うルート
store()メソッド内でContact::create()を使ってDBへ保存- 完了後は
/thanksへのリダイレクトが一般的な流れ
Route::get('/thanks', [ContactController::class, 'thanks']);
- 保存処理が成功した後の完了画面の表示
thanks()メソッドで「お問い合わせを受け付けました」といったメッセージを返すGETメソッドなので、リダイレクトや URL直接アクセスにも対応可能
3.Git push
以上が完了したら、ここでGitを共有しておきましょう。
git add -A
git commit -m "コメントを入力する"
git push origin make-routes
git pushが無事完了したら、GitHub上で操作を行います。
pull requestが来ているので、mergeしましょう。