Laravelで複数の入力フォームを一括で処理する方法(配列入力)
生徒
「先生、Laravelで同じ種類の入力フォームを複数作った場合、まとめて処理することはできますか?」
先生
「はい、できます。フォームの名前に[]を付けることで、複数の入力を配列としてまとめて送信できるんです。」
生徒
「配列って何ですか?ちょっと難しそうです…」
先生
「配列とは、同じ種類のデータを順番にまとめて管理できる箱のようなものです。複数の果物の名前をまとめて送る場合、配列に入れて一度に扱えるようにするイメージです。」
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で配列入力を受け取る方法
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. 動的に入力フォームを増やす
ユーザーが必要に応じて入力欄を追加できるようにするには、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. 配列入力の注意点とポイント
- 同じ種類の入力は名前に
[]を付けて配列として送信する - Controllerでは
Request::input()で配列として受け取る - バリデーションは
fruits.*のように書くと便利 - 動的に入力フォームを増やす場合はJavaScriptを活用する
- 配列入力を使うことで、複数データを一括で処理できる
まとめ
Laravelで複数の入力フォームを一括で処理する方法として重要になるのが、配列入力という仕組みです。Webアプリケーション開発では、同じ種類のデータを複数登録したい場面が頻繁にあります。例えば商品名を複数登録するフォーム、タグを複数追加するフォーム、アンケート回答をまとめて送信するフォームなどです。このような場面では、Laravelの配列入力を活用すると、シンプルで分かりやすいコードで効率よく処理できます。
HTMLフォームでは、inputタグやtextareaタグのname属性に角括弧を付けることで配列としてデータを送信できます。具体的には fruits[] のように書くことで、複数の入力値がまとめて一つの配列としてサーバーに送信されます。この仕組みはLaravelだけでなく、PHPの基本的なフォーム処理でも利用される重要なテクニックです。PHP初心者やLaravel初心者の方にとっても理解しておくと非常に役立つ知識です。
Laravelでは送信された配列データをControllerで簡単に取得できます。Requestクラスのinputメソッドを使えば、配列としてまとめて取得できるため、foreach文で一つずつ処理することが可能です。この方法を使うことで、複数の入力データをデータベースに保存したり、画面に表示したり、バリデーションチェックを行ったりできます。
特に便利なのが配列バリデーションです。Laravelでは fruits.* のように記述することで、配列の各要素に対して個別にバリデーションルールを適用できます。例えば必須入力のチェックや文字数制限、文字列の形式チェックなどを一括で行うことが可能になります。これによりユーザーの入力ミスを防ぎ、より安全で信頼性の高いWebシステムを作ることができます。
また、JavaScriptを組み合わせることで入力フォームを動的に増やすこともできます。ユーザーが必要な数だけ入力欄を追加できるようにすれば、より柔軟なフォームを作ることができます。例えばタグ入力フォーム、商品バリエーション登録フォーム、複数メールアドレス登録フォームなど、多くの場面で応用できます。LaravelとJavaScriptを組み合わせることで、ユーザー体験の高いWebフォームを実装できます。
Web開発ではフォーム処理がとても重要です。ユーザーから入力されたデータを正しく受け取り、安全に処理することがWebアプリケーションの基本になります。Laravelの配列入力を理解しておくことで、複数データの登録処理や一括入力フォームの開発がとてもスムーズになります。特にLaravel初心者やPHP初心者にとって、配列入力フォームの作り方、Controllerでの受け取り方、バリデーションの書き方を理解しておくことは非常に大切です。
配列入力処理のサンプルコード
Laravelで配列入力を処理する基本的なサンプルコードをもう一度確認してみましょう。配列として送信されたデータをControllerで取得し、foreachで順番に処理するシンプルな例です。
public function submit(Request $request)
{
$request->validate([
'fruits.*' => 'required|string|max:50',
]);
$fruits = $request->input('fruits');
foreach ($fruits as $fruit) {
echo $fruit . '<br>';
}
}
このコードでは fruits 配列の各要素に対して必須チェックと文字列チェックを行い、その後でforeach文を使って順番に出力しています。実際の開発では、この部分をデータベース登録処理に変更すれば、複数データをまとめて保存することができます。
配列入力フォームのHTMLサンプル
フォーム側では、inputタグのname属性に配列記号を付けることがポイントです。次のように記述することで複数入力を配列として送信できます。
<form method="POST" action="/submit">
<input type="text" name="fruits[]" class="form-control mb-2">
<input type="text" name="fruits[]" class="form-control mb-2">
<input type="text" name="fruits[]" class="form-control mb-2">
<button type="submit" class="btn btn-primary">送信</button>
</form>
このように書くだけで、複数入力フォームのデータが fruits 配列としてLaravelに送信されます。とてもシンプルですが、実務のWeb開発では頻繁に使われる重要なテクニックです。フォーム設計の基本としてぜひ覚えておきましょう。
Laravelの配列入力は、複数商品の登録フォーム、タグ管理機能、アンケート入力、メールアドレス登録フォーム、複数画像アップロードフォームなど、さまざまな場面で活用できます。Laravelを使ったWebアプリケーション開発では必須とも言える知識なので、実際にコードを書きながら理解を深めていくことをおすすめします。
生徒
先生、Laravelで複数の入力フォームをまとめて処理する方法がやっと分かってきました。同じ名前のフォームに配列を使うと、複数のデータを一度に送れるんですね。
先生
その通りです。inputのname属性に角括弧を付けることで、複数の入力値が配列として送信されます。Laravelではその配列をControllerで簡単に受け取ることができます。
生徒
Requestのinputメソッドで配列を取得して、foreachで処理するのが基本なんですね。思ったよりシンプルでした。
先生
はい。さらにLaravelでは fruits.* のように書くことで、配列の各要素に対してバリデーションを適用できます。これがLaravelの便利なポイントです。
生徒
JavaScriptを使えば入力フォームを増やすこともできるので、タグ入力や商品登録フォームにも使えそうですね。
先生
その通りです。Laravelの配列入力はWebアプリケーション開発で非常によく使われる技術です。フォーム設計とデータ処理を理解することで、より実践的なLaravel開発ができるようになります。
生徒
なるほど。Laravelのフォーム処理の基本として、配列入力とバリデーションをしっかり覚えておきます。
先生
それが大切です。Laravelのフォーム処理、配列入力、バリデーション、Controllerのデータ取得方法を理解すれば、実務でも通用するWebフォームが作れるようになります。これからも実際にコードを書きながら学習を続けていきましょう。