カテゴリ: Laravel 更新日: 2025/12/01

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ではroutes/web.phpにルートを定義します。


use App\Http\Controllers\FormController;

Route::get('/contact', [FormController::class, 'showForm']);
Route::post('/contact', [FormController::class, 'submitForm']);

次にコントローラを作ります。ターミナルで以下のコマンドを実行します。


php artisan make:controller FormController

作成したコントローラにフォーム表示と送信処理のメソッドを追加します。


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FormController extends Controller
{
    public function showForm()
    {
        return view('contact');
    }

    public function submitForm(Request $request)
    {
        $data = $request->all();
        // データを処理(例:DB保存やメール送信)
        return 'フォームが送信されました: ' . json_encode($data);
    }
}

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
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド