セレクトボックスを作成する


forms

 悩み事

Bladeテンプレートでセレクトボックスを作成したい

<select>を利用せずに、Formファサードを利用してみましょう

 解決方法

Form::select()メソッドを利用します

フィールド名を指定し、選択肢を配列で指定します

{{Form::select('age', ['Under 18', '19 to 30', 'Over 30'])}}

この場合、valueは配列の インデックス が利用されます

<select name="age">
  <option value="0">Under 18</option>
  <option value="1">19 to 30</option>
  <option value="2">Over 30</option>
</select>

または連想配列を利用します

{{Form::select('age', [
   'young' => 'Under 18',
   'adult' => '19 to 30',
   'adult2' => 'Over 30']
)}}

この場合、valueには連想配列のkeyが利用されます

<select name="age">
  <option value="young">Under 18</option>
  <option value="adult">19 to 30</option>
  <option value="adult2">Over 30</option>
</select>

デフォルト値を利用する場合は第三引数に値を指定します

{{Form::select('number', [0, 1, 2], 2)}}

次の様に出力されます

<select name="number">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2" selected="selected">2</option>
</select>

属性を追加する場合は、第四引数に配列を利用します

{{Form::select('number', [1, 2, 3], null, ['class' => 'field'])}}

フィールドにclassが追加されます

<select class="field" name="number">
  <option value="0">1</option>
  <option value="1">2</option>
  <option value="2">3</option>
</select>

 アドバイス

セレクトボックスの選択肢をグループ化する事も可能です

選択肢を更に連想配列等で分割することで、グループが作成されます

{{Form::select('feeling', [
  'Happy' => ['Joyous', 'Glad', 'Ecstatic'],
  'Sad' => ['Bereaved', 'Pensive', 'Down'],
])}}

次の様なHTMLが出力されます

<select name="feeling">
  <optgroup label="Happy">
    <option value="0">Joyous</option>
    <option value="1">Glad</option>
    <option value="2">Ecstatic</option>
  </optgroup>
  <optgroup label="Sad">
    <option value="0">Bereaved</option>
    <option value="1">Pensive</option>
    <option value="2">Down</option>
  </optgroup>
</select>

Author:Chuck Heintzelman

Editor and Translator:Yuuki Takezawa