CakePHPのselectボックスのemptyオプションでvalueを指定する方法


CakePHP2.xのformにて、selectボックスのemptyオプションでvalueを指定したい場合どうすれば良いのか、メモ代わりに記述しておきます。

※公式のCakebook 2.xには記述が見当たらなかった(私の探し方が下手なだけの可能性もあり)ので。

■Cakebook2.xに掲載されている内容(を参考に私が書いたもの)

echo $this->Form->select('field', array(1 => 'Internet Explorer', 2 => 'Google Chrome', 3 => 'Firefox'), array('label'=>false, 'empty'=>'ウェブブラウザ'));

上記の様に記述した場合、出力されるHTMLは以下の様になります。

<select name="data[Xxx][field]" id="XxxField">
<option value="">ウェブブラウザ</option>
<option value="1">Internet Explorer</option>
<option value="2">Google Chrome</option>
<option value="3">Firefox</option>
</select>

これだと、ウェブブラウザの項目のvalueは空っぽです。

emptyオプションの指定を

'empty'=>'ウェブブラウザ'

と行うと、valueの値は空っぽになります。

例えばvalueの値を「0」にしたい場合は、以下の様にすれば良いようです。

■selectボックスのemptyオプションでvalueを指定する方法

echo $this->Form->select('field', array(1 => 'Internet Explorer', 2 => 'Google Chrome', 3 => 'Firefox'), array('label'=>false, 'empty'=>array(0 =>'ウェブブラウザ')));

上記の様に記述した場合、出力されるHTMLは以下の様になります。

<select name="data[Xxx][field]" id="XxxField">
<option value="0">ウェブブラウザ</option>
<option value="1">Internet Explorer</option>
<option value="2">Google Chrome</option>
<option value="3">Firefox</option>
</select>

ウェブブラウザの項目のvalueに「0」がセットされました。

emptyオプションの指定を

'empty'=>array(0 =>'ウェブブラウザ')

というように、連想配列で渡せば良いようです。

[参考]ここに、フォーム(select、checkbox、radioのオプションに関する記述あり。ただし、「valueが空っぽになる」方の記述法しか掲載されていないようです。)
Cakebook 2.x -> FormHelper -> Options for select, checkbox and radio inputs

コメントを残す

メールアドレスが公開されることはありません。