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

Laravelで複数の入力フォームを一括で処理する方法(配列入力)

Laravelで複数の入力フォームを一括で処理する方法(配列入力)
Laravelで複数の入力フォームを一括で処理する方法(配列入力)

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

生徒

「先生、Laravelで同じ種類の入力フォームを複数作った場合、まとめて処理することはできますか?」

先生

「はい、できます。フォームの名前に[]を付けることで、複数の入力を配列としてまとめて送信できるんです。」

生徒

「配列って何ですか?ちょっと難しそうです…」

先生

「配列とは、同じ種類のデータを順番にまとめて管理できる箱のようなものです。複数の果物の名前をまとめて送る場合、配列に入れて一度に扱えるようにするイメージです。」

1. 配列入力フォームの作り方

1. 配列入力フォームの作り方
1. 配列入力フォームの作り方

同じ種類の入力をまとめて送信する場合、HTMLのinputやtextareaの名前の末尾に[]を付けます。例えば、果物の名前を3つ入力できるフォームは次のように書きます。


<form action="{{ route('form.submit') }}" method="POST">
    @csrf
    <input type="text" name="fruits[]" class="form-control mb-2" placeholder="果物を入力">
    <input type="text" name="fruits[]" class="form-control mb-2" placeholder="果物を入力">
    <input type="text" name="fruits[]" class="form-control mb-2" placeholder="果物を入力">
    <button type="submit" class="btn btn-primary">送信</button>
</form>

これで送信すると、同じ名前の入力がまとめてfruitsという配列として送られます。

2. Controllerで配列入力を受け取る方法

2. Controllerで配列入力を受け取る方法
2. Controllerで配列入力を受け取る方法

LaravelのControllerでは、Requestオブジェクトを使って配列を簡単に受け取れます。


public function submit(Request $request)
{
    // バリデーションで配列の各要素をチェック
    $request->validate([
        'fruits.*' => 'required|string|max:50',
    ]);

    // 配列として値を取得
    $fruits = $request->input('fruits');

    foreach ($fruits as $fruit) {
        // 各入力を処理
        echo $fruit . '<br>';
    }
}

fruits.*と書くことで、配列の各要素にバリデーションを適用できます。例えば、空欄の入力を禁止したり、文字数制限をかけたりできます。

3. 動的に入力フォームを増やす

3. 動的に入力フォームを増やす
3. 動的に入力フォームを増やす

ユーザーが必要に応じて入力欄を追加できるようにするには、JavaScriptで動的にinputを追加します。


<div id="fruits-container">
    <input type="text" name="fruits[]" class="form-control mb-2" placeholder="果物を入力">
</div>
<button type="button" class="btn btn-secondary mb-2" id="add-fruit">入力欄を追加</button>

<script>
document.getElementById('add-fruit').addEventListener('click', function(){
    var container = document.getElementById('fruits-container');
    var input = document.createElement('input');
    input.type = 'text';
    input.name = 'fruits[]';
    input.className = 'form-control mb-2';
    input.placeholder = '果物を入力';
    container.appendChild(input);
});
</script>

これでユーザーは自由に入力欄を増やせるので、複数のデータを効率よく送信できます。

4. 配列入力の注意点とポイント

4. 配列入力の注意点とポイント
4. 配列入力の注意点とポイント
  • 同じ種類の入力は名前に[]を付けて配列として送信する
  • ControllerではRequest::input()で配列として受け取る
  • バリデーションはfruits.*のように書くと便利
  • 動的に入力フォームを増やす場合はJavaScriptを活用する
  • 配列入力を使うことで、複数データを一括で処理できる
カテゴリの一覧へ
新着記事
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のルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)