SEEDS Creator's Blog

Form::select でvalueが空のoption項目を作る

fuelphpのFormクラスはいろいろと便利です。 その中でも、selectとradioはチェックをつけてくれたりするので大好きです。

Form::select - http://fuelphp.jp/docs/1.7/classes/form.html#/method_select

View内で以下のように書いたら、

[code] <? $arrGender = [1 => '男性', 2 => '女性']; $gender = 2; echo Form::select('gender',$gender,$arrGender,['class' =>'form-control']); ?> [/code]

こんなhtmlを作ってくれます。

[code] <select class="form-control" name="gender" id="form_gender"> <option value="1">男性</option< <option value="2" selected="selected">女性</option> </select> [/code]

通常は$arrGenderの部分は別で定義しておきますし、 $genderの部分はModelあたりから取ってきたりPostされた値が入っています。

$arrGenderの配列に合わせてoption の部分を作ってくれて、 $genderのキーと一致するoptionにselectedを付けてくれます。超便利。

ですが、これだとユーザーが本当に値を選択したのかわからないので、入力が空ならエラーを出す形にしたい。 つまりこういうHTMLを出したい。

[code] <select class="form-control" name="gender" id="form_gender"> <option value="">選択してください</option> <option value="1">男性</option> <option value="2">女性</option> </select> [/code]

$arrGenderをこんな配列にしてやれば実現できました。

[code] <? $gender = null; $arrGender = ['' => '選択してください', 1 => '男性', 2 => '女性']; echo Form::select('gender',$gender,$arrGender,['class' => 'form-control']); ?> [/code]