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

Laravelでセレクトボックスを生成・バインドする方法(選択肢の動的生成)

Laravelでセレクトボックスを生成・バインドする方法(選択肢の動的生成)
Laravelでセレクトボックスを生成・バインドする方法(選択肢の動的生成)

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

生徒

「先生、Laravelでセレクトボックスを作りたいんですけど、選択肢を動的に生成する方法はありますか?」

先生

「もちろんできます。データベースの情報や配列から動的に選択肢を作って、Bladeテンプレートで表示する方法があります。」

生徒

「動的に作ると、ユーザーが選んだ値をどうやって取得するんですか?」

先生

「ControllerでRequestオブジェクトを使って、input()で受け取ります。選択肢の値がそのまま取得できるので簡単です。」

1. Bladeでセレクトボックスを作る

1. Bladeでセレクトボックスを作る
1. Bladeでセレクトボックスを作る

まずは静的なセレクトボックスの例です。セレクトボックスとは、ユーザーが複数の選択肢から1つを選べるフォーム部品です。


<form action="{{ route('form.submit') }}" method="POST">
    @csrf
    <select name="fruit" class="form-select">
        <option value="">選択してください</option>
        <option value="りんご" {{ old('fruit') == 'りんご' ? 'selected' : '' }}>りんご</option>
        <option value="みかん" {{ old('fruit') == 'みかん' ? 'selected' : '' }}>みかん</option>
        <option value="バナナ" {{ old('fruit') == 'バナナ' ? 'selected' : '' }}>バナナ</option>
    </select>
    <button type="submit" class="btn btn-primary mt-2">送信</button>
</form>

ここでold('fruit')を使うことで、バリデーションエラー時にユーザーの選択を保持できます。

2. 配列やデータベースから動的に選択肢を生成する

2. 配列やデータベースから動的に選択肢を生成する
2. 配列やデータベースから動的に選択肢を生成する

動的生成では、配列やデータベースのデータをループで回して


@php
$fruits = ['りんご', 'みかん', 'バナナ', 'ぶどう'];
@endphp

<select name="fruit" class="form-select">
    <option value="">選択してください</option>
    @foreach ($fruits as $fruit)
        <option value="{{ $fruit }}" {{ old('fruit') == $fruit ? 'selected' : '' }}>{{ $fruit }}</option>
    @endforeach
</select>

ループ処理@foreachを使って、配列の要素を1つずつ

3. Controllerで選択値を受け取る

3. Controllerで選択値を受け取る
3. Controllerで選択値を受け取る

ControllerではRequestオブジェクトを使って値を受け取ります。


public function submit(Request $request)
{
    $request->validate([
        'fruit' => 'required|string',
    ]);

    $selectedFruit = $request->input('fruit'); // 選択された値を取得
}

バリデーションを行うことで、未選択の場合にエラーを返すこともできます。

4. データベースから選択肢を生成する場合

4. データベースから選択肢を生成する場合
4. データベースから選択肢を生成する場合

例えば、fruitsテーブルに登録されている果物をセレクトボックスに表示する場合です。


// Controller
public function create()
{
    $fruits = \App\Models\Fruit::all(); // データベースから取得
    return view('form.create', compact('fruits'));
}

<select name="fruit" class="form-select">
    <option value="">選択してください</option>
    @foreach ($fruits as $fruit)
        <option value="{{ $fruit->id }}" {{ old('fruit') == $fruit->id ? 'selected' : '' }}>
            {{ $fruit->name }}
        </option>
    @endforeach
</select>

これでデータベースの内容が自動でセレクトボックスに反映されます。

5. 選択肢生成のポイント

5. 選択肢生成のポイント
5. 選択肢生成のポイント
  • 静的・動的の両方でセレクトボックスを作れる
  • 動的生成は配列やデータベースをループで
  • バリデーション後の保持はold()で簡単に実装
  • Controllerで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でルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)