カテゴリ: 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
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.3
Java&Spring記事人気No3
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.4
Java&Spring記事人気No4
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.7
Java&Spring記事人気No7
Laravel
LaravelでRemember Me(ログイン状態保持)機能を実装する方法を完全解説!初心者でも安心の認証入門
No.8
Java&Spring記事人気No8
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点