複数選択させるチェックBOXを出したいとき、並べるだけなら’type’=>’select’, ‘multiple’=>’checkbox’
としてセレクトタグのように指定する方法がある。
でも、個別のinputタグを自由に配置したいなら、’type’=>’checkbox’を複数書くしかない。
<input type="checkbox" name="id[]" value="1" checked>1
<input type="checkbox" name="id[]" value="2">2
<input type="checkbox" name="id[]" value="3">3
と書きたいときは、
echo $this->Form->input('id.', array('type'=>'checkbox', value=1, checked=@in_array(1, $this->request->data['id']));
echo $this->Form->input('id.', array('type'=>'checkbox', value=2, checked=@in_array(2, $this->request->data['id']));
echo $this->Form->input('id.', array('type'=>'checkbox', value=3, checked=@in_array(3, $this->request->data['id']));
ポイントは
1. nameの最後にピリオドを付けて配列[]としてのnameを展開させる事。
2. そしてrequest->dataに配列で入るのでcheckboxの標準処理ではチェックが立たないので、in_arrayで値が選択済みか調べる事。
3. また、初期状態ではrequest->dataがセットされなくてNoticeが出るので@で警告抑制する事。