カテゴリ: Laravel 更新日: 2026/02/28

Laravelでフォームを作る基本の方法(Blade + POSTリクエスト)

Laravelでフォームを作る基本の方法(Blade + POSTリクエスト)
Laravelでフォームを作る基本の方法(Blade + POSTリクエスト)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでフォームを作りたいんですけど、どうやって始めればいいですか?」

先生

「まずはBladeテンプレートでフォームを作り、POSTリクエストを使ってデータを送信する基本を理解しましょう。」

生徒

「Bladeテンプレートって何ですか?」

先生

「BladeはLaravelのテンプレートエンジンで、HTMLにPHPコードを書きやすくしたものです。簡単に変数の埋め込みや条件分岐、ループ処理ができます。」

生徒

「なるほど。それで、POSTリクエストって何ですか?」

先生

「POSTリクエストは、ユーザーがフォームに入力したデータをサーバーに送信する方法です。GETリクエストと違ってURLにデータが表示されず、安全にデータを送れます。」

1. ルートとコントローラを準備しよう

1. ルートとコントローラを準備しよう
1. ルートとコントローラを準備しよう

Laravelでフォーム機能を実装するには、まず「どのURLにアクセスしたら」「どのプログラム(コントローラ)を動かすか」という交通整理の設定が必要です。これをルーティングと呼びます。

まずは、ブラウザで表示するための設定と、送信ボタンを押した後の設定をroutes/web.phpに追記しましょう。


use App\Http\Controllers\FormController;
use Illuminate\Support\Facades\Route;

// フォームの画面を表示するためのルート(GETリクエスト)
Route::get('/contact', [FormController::class, 'showForm']);

// フォームのデータを受け取るためのルート(POSTリクエスト)
Route::post('/contact', [FormController::class, 'submitForm']);

次に、実際の処理を担当する「コントローラ」を作成します。Laravelでは、職人(Artisan)コマンドを使って雛形を自動生成するのが一般的です。ターミナル(WindowsならコマンドプロンプトやPowerShell)を開き、プロジェクトのフォルダで以下のコマンドを入力してください。


php artisan make:controller FormController

コマンドを実行すると、app/Http/Controllers/FormController.phpというファイルが作成されます。この中に、先ほどルートで指定した「表示用(showForm)」と「受信用(submitForm)」の2つの動きを書き込んでいきます。


namespace App\Http\Controllers;

// Requestクラスを読み込むことで、送信されたデータを取り扱えるようになります
use Illuminate\Http\Request;

class FormController extends Controller
{
    // お問い合わせ画面(入力画面)を表示する魔法
    public function showForm()
    {
        // resources/views/contact.blade.php を表示します
        return view('contact');
    }

    // 送信されたデータを受け取って処理する魔法
    public function submitForm(Request $request)
    {
        // $requestの中に、ユーザーが入力した「名前」や「メール」が全て入っています
        $data = $request->all();

        // 開発中は、このように中身をのぞいて確認してみましょう
        return 'フォームから無事にデータが届きました:' . json_encode($data);
    }
}

プログラミング未経験の方は、まず「GETは画面を見るため」「POSTはデータを送るため」という使い分けを意識するだけでOKです。これでデータの通り道が完成しました。

2. Bladeテンプレートでフォームを作る

2. Bladeテンプレートでフォームを作る
2. Bladeテンプレートでフォームを作る

フォームはresources/views/contact.blade.phpに作成します。POSTリクエストで送信する場合、@csrfを必ず入れます。これはCSRF(クロスサイトリクエストフォージェリ)対策用のトークンです。


<form action="/contact" method="POST">
    @csrf
    <div>
        <label for="name">名前:</label>
        <input type="text" id="name" name="name">
    </div>
    <div>
        <label for="email">メールアドレス:</label>
        <input type="email" id="email" name="email">
    </div>
    <div>
        <label for="message">メッセージ:</label>
        <textarea id="message" name="message"></textarea>
    </div>
    <button type="submit">送信</button>
</form>

3. 入力データを取得して処理する

3. 入力データを取得して処理する
3. 入力データを取得して処理する

送信されたデータはコントローラのRequestオブジェクトから取得できます。$request->all()で全データを取得し、個別に取り出すことも可能です。


public function submitForm(Request $request)
{
    $name = $request->input('name');
    $email = $request->input('email');
    $message = $request->input('message');

    // ここでDBに保存したりメール送信したりできます
    return "こんにちは、{$name}さん。送信完了しました。";
}

4. フォームバリデーションの基本

4. フォームバリデーションの基本
4. フォームバリデーションの基本

フォーム入力時に必須チェックや形式チェックを行いたい場合は、Laravelのバリデーション機能を使います。$request->validate()で簡単にチェックできます。


public function submitForm(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email',
        'message' => 'required',
    ]);

    return "バリデーション通過しました: " . json_encode($validated);
}

バリデーションに失敗した場合、自動的に元のフォームにリダイレクトされ、エラーメッセージが表示されます。

5. まとめずに次のステップに進むポイント

5. まとめずに次のステップに進むポイント
5. まとめずに次のステップに進むポイント

この基本を理解すれば、Laravelでフォームを簡単に作り、POSTリクエストでデータを受け取れるようになります。Bladeテンプレート、CSRFトークン、コントローラのRequestオブジェクトを組み合わせることが重要です。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)