LaravelのFormファサード(laravelcollective/html)でセレクトボックスを実装する

LaravelのFormファサード(laravelcollective/html)でセレクトボックスを実装する方法を解説する。

公式サイト

インストール

$ composer require laravelcollective/html

バージョンを指定してインストールすることもできる。

例:5.8をインストールする場合

$ composer require "laravelcollective/html":"5.8"

Form::select()の使い方

第1引数がselectタグのname属性、第2引数がoptionタグになる。

ソースコード

{{ Form::select(
    'pref', 
    [13=>'東京都',14=>'神奈川県', 26=>'京都府',27=>'大阪府']
) }}

実行結果

<select name="pref">
    <option value="13">東京都</option>
    <option value="14">神奈川県</option>
    <option value="26">京都府</option>
    <option value="27">大阪府</option>
</select>

第3引数は初期値になる。

ソースコード

{{ Form::select(
    'pref', 
    [13=>'東京都',14=>'神奈川県', 26=>'京都府',27=>'大阪府'], 
    26
) }}

実行結果

<select name="pref">
    <option value="13">東京都</option>
    <option value="14">神奈川県</option>
    <option value="26" selected="selected">京都府</option>
    <option value="27">大阪府</option>
</select>

第4引数はselectタグの属性になる。

ソースコード

{{ Form::select(
    'pref', 
    [13=>'東京都',14=>'神奈川県', 26=>'京都府',27=>'大阪府'], 
    null, 
    ['class'=>'form-control']
) }}

実行結果

<select class="form-control" name="pref">
    <option value="13">東京都</option>
    <option value="14">神奈川県</option>
    <option value="26">京都府</option>
    <option value="27">大阪府</option>
</select>

第4引数にplaceholderを指定すると、値のないoptionタグが要素の最初に作成される。

ソースコード

{{ Form::select(
    'pref', 
    [13=>'東京都',14=>'神奈川県', 26=>'京都府',27=>'大阪府'], 
    null, 
    ['class'=>'form-control', 'placeholder'=>'選択してください']
) }}

実行結果

<select class="form-control" name="pref">
<option selected="selected" value="">選択してください</option>
<option value="13">東京都</option>
<option value="14">神奈川県</option>
<option value="26">京都府</option>
<option value="27">大阪府</option>
</select>

第2引数を配列の入れ子にすると、選択肢が階層化される。

ソースコード

{{ Form::select('pref', [
    '関東地方'=>[13=>'東京都',14=>'神奈川県'],
    '近畿地方'=>[26=>'京都府',27=>'大阪府']
]) }}

実行結果

<select name="pref">
    <optgroup label="関東地方">
        <option value="13">東京都</option>
        <option value="14">神奈川県</option>
    </optgroup><optgroup label="近畿地方">
        <option value="26">京都府</option>
        <option value="27">大阪府</option>
    </optgroup>
</select>

Eloquentモデルを使う

pluck()メソッドを使うと、簡単に選択肢を作成できる。

$prefectures = Prefectures::query()
    ->orderBy('code)
    ->pluck('name', 'code');
return view('index')->with(['prefectures'=>$prefectures]);
{{ Form::select('pref', $prefectures) }}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください