HTMLのフォームの入力について、セレクトボックスの複数選択を許可するmultiple属性がついているものに関して、フォーム送信したときに、選択されているvalueすべてを取得する方法を紹介したいと思います。
今回はLaravel上での動作確認としていますが、PHPなら使えるんじゃないかなと思っています。
HTMLソースを書いてみる
今回使用するDOM構成は以下のようにしました。もちろんinputタグとかも必要ですが、ここでは省略しています。
<select class="form-control" name="value1" size="2" multiple> <option value="1">1</option> <option value="2">2</option> </select>
このように、nameがvalue1として、複数選択を送信しようと思います。
PHPソースを書いてみる
このリクエストについて、Requestクラスのvalue1のパラメータをprint_r()を使って出力してみます。
print_r($request->value1);
出力結果は以下のようになります。
2
残念、2つ目のoptionだけしか取得できませんでした。。
HTMLソースを修正してみる
以下のように、nameをvalue1[]のように配列の表記に変更します。
<select class="form-control" name="value1[]" size="2" multiple> <option value="1">1</option> <option value="2">2</option> </select>
これで送信してみると・・・
Array ( [0] => 1 [1] => 2 )
無事、配列で選択されているものが取得できました!