カテゴリ: Laravel 更新日: 2026/07/08

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を使って選択値を取得
  • 未選択時のバリデーションを設定してユーザーの入力ミスを防ぐ

まとめ

まとめ
まとめ

Laravelのセレクトボックスの基本を振り返る

この記事では、Laravelでセレクトボックスを作成する方法について、基本から実践的な使い方まで解説しました。セレクトボックスはフォーム入力の中でもよく使われる部品であり、ユーザーに複数の選択肢を提示して、その中から一つを選んでもらうための重要なインターフェースです。LaravelではBladeテンプレートを使うことで、簡単にセレクトボックスを作成できます。また、配列やデータベースから選択肢を動的に生成することもできるため、実務でよく使われる機能の一つです。

最も基本的な方法は、Bladeテンプレートの中でselectタグとoptionタグを記述する方法です。静的なセレクトボックスであれば、HTMLの構文と同じようにoptionタグを直接書くだけで実装できます。しかし実際の開発では、商品一覧、カテゴリ一覧、ユーザー一覧など、データベースから取得した情報を選択肢として表示するケースが非常に多くなります。その場合には、Bladeのforeachディレクティブを利用して、配列やコレクションの内容をループ処理しながらoptionタグを生成します。

また、フォーム入力ではバリデーションエラーが発生することもあります。その際に重要になるのがold関数です。old関数を利用すると、バリデーションエラーが発生して画面が再表示された場合でも、ユーザーが選択していた値を保持することができます。これにより、ユーザーは再度選択し直す必要がなくなり、ユーザー体験の向上につながります。

配列からセレクトボックスを生成する例

配列を使ったセレクトボックスの生成は、Laravelのフォーム処理を理解するうえで非常に分かりやすい例です。例えば、果物のリストを配列として定義し、それをforeachで回してoptionタグに変換することで、簡単に選択肢を作ることができます。


@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>

このように配列の内容をループ処理することで、選択肢の数が増えてもコードの修正が最小限で済みます。LaravelのBladeテンプレートはこのような動的生成に非常に強く、効率よくフォームを作ることができます。

Controllerで選択された値を取得する

セレクトボックスでユーザーが選択した値は、Controller側でRequestオブジェクトを使って取得します。Laravelではrequestオブジェクトからinputメソッドを使うことで、フォームの入力値を簡単に取得できます。また、同時にバリデーションを設定することで、未選択の場合のエラー処理も行えます。


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

    $selectedFruit = $request->input('fruit');

    return $selectedFruit;
}

このようにバリデーションを設定しておくことで、必須入力のチェックやデータ形式のチェックを行うことができます。Laravelのフォーム処理では、入力値の検証とデータ取得をセットで考えることが重要です。

データベースの情報をセレクトボックスに表示する

実際のWebアプリケーションでは、セレクトボックスの選択肢はデータベースから取得することが多くなります。例えば、商品カテゴリ、ユーザー一覧、地域一覧などの情報をセレクトボックスに表示するケースです。このような場合は、Controllerでデータベースからデータを取得し、それをBladeテンプレートに渡します。


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>

この方法を使うことで、データベースの内容が変更された場合でも、自動的にセレクトボックスの内容が更新されます。管理画面や登録フォームなど、多くの場面で利用される非常に実用的な実装方法です。

Laravelのセレクトボックス実装で重要なポイント

Laravelでセレクトボックスを扱う際には、いくつかの重要なポイントがあります。まず、Bladeテンプレートでselectタグを作成し、optionタグを使って選択肢を定義します。次に、配列やデータベースから取得したデータをforeachでループ処理し、動的に選択肢を生成します。さらに、old関数を利用することで、バリデーションエラー時の入力値保持を実現します。そしてControllerではRequestオブジェクトを使って選択された値を取得し、必要に応じてバリデーションを設定します。

これらの基本を理解しておくことで、Laravelのフォーム開発を効率よく進めることができます。特にセレクトボックスは登録フォームや検索フォームなど、多くの画面で使用されるため、動的生成の方法や入力値取得の仕組みをしっかり理解しておくことが重要です。

先生と生徒の振り返り会話

生徒

先生、Laravelでセレクトボックスを作る方法がよく分かりました。最初は普通のHTMLと同じようにoptionタグを書くんですね。

先生

そうですね。基本はHTMLと同じですが、LaravelではBladeテンプレートを使うことで、より柔軟にセレクトボックスを作ることができます。特にforeachを使った動的生成はとても重要です。

生徒

配列から選択肢を作る方法も分かりました。配列をループしてoptionタグを作るだけなので、思ったよりシンプルですね。

先生

その通りです。そして実際の開発では、データベースから取得したデータをそのままセレクトボックスに表示することが多いです。Controllerでデータを取得して、Bladeに渡す流れを覚えておきましょう。

生徒

old関数も便利ですね。バリデーションエラーのときに、ユーザーが選んだ値を保持できるのは助かります。

先生

そうです。フォームの使いやすさを考えると、入力値の保持はとても大切です。Laravelではold関数を使うことで簡単に実装できます。

生徒

ControllerではRequestのinputメソッドで値を取得するんですね。バリデーションも一緒に書いておくと安全そうです。

先生

その理解で大丈夫です。Laravelのフォーム処理は、Bladeでフォームを作る、Controllerで入力値を受け取る、バリデーションで入力チェックを行うという流れを覚えておくと良いでしょう。

生徒

Laravelのセレクトボックスは、配列やデータベースから動的に選択肢を作れるのが便利ですね。フォーム開発のイメージがかなり掴めました。

先生

とても良い理解です。セレクトボックスの実装は、Laravelのフォーム処理を学ぶうえで重要な基礎です。これからはカテゴリ選択や検索フォームなど、いろいろな場面で活用してみてください。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Laravelのセレクトボックスとは何ですか?HTMLの標準的なプルダウンメニューとの違いや特徴について教えてください。

Laravelのセレクトボックスとは、Webアプリケーションのフォームにおいてユーザーが複数の選択肢の中から一つを選べるようにするための入力部品です。基本的にはHTMLのselectタグとoptionタグの組み合わせで構成されますが、Laravel(PHPフレームワーク)を使用することで、サーバー側のプログラム(Controller)から渡された配列データやデータベースのテーブル情報を利用して、選択肢を動的に生成したり、ユーザーが選択した値を簡単に取得・保持したりできる点が大きな特徴です。
カテゴリの一覧へ
新着記事
New2
Symfony
Symfonyのコントローラで404・403エラーを制御する方法を初心者向けに解説!
New3
Symfony
Symfonyで独自イベント(カスタムイベント)を作成する方法をやさしく解説
New4
Laravel
Laravel Sailとは?初心者でもわかるDocker環境構築と使い方の基本
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
CodeIgniter
CodeIgniterのCSRF対策を完全解説!フォーム処理のセキュリティ手順
No.4
Java&Spring記事人気No4
Laravel
Laravelのリレーションを使った検索条件の書き方(whereHas)
No.5
Java&Spring記事人気No5
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.6
Java&Spring記事人気No6
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.7
Java&Spring記事人気No7
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.8
Java&Spring記事人気No8
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法