CakePHPでは、標準で、複数のチェックボックスを処理する為のヘルパーが用意されていない。
habtmというヘルパーが公開されてたがうまく動作しないので、うまく動くように調整した。
【利用方法】
1.habtm修正後ソースの設置
上記リンクよりダウンロードし、app/views/helpers に「habtm.php」として設置。
2.tags.ini.phpの設置
app/config に、「tags.ini.php」というファイルを作成し、以下の内容を記述。
; Tag template for a input type='checkbox ' tag. checkboxmultiple = "<input type="checkbox" name="data[%s][%s][%s]" %s/> %s"
3.viewでの利用(Smartyを利用している場合)
{assign_assoc var='fld' value='value1=>viewdata1,value2=>viewdata2'} {$input->checkboxMultiple('table/fld1',$fld1,null,null,null,false)}
こんな感じで利用します。
Smartyで利用する場合、「assign_assoc」というView上で、配列を扱う為のSmartyのプラグインを用意するか、コントローラー側で配列データを用意してあげる必要があります。
4.値の処理
上記の例で、二つともチェックを入れた場合、以下のような状態でコントローラーに渡されますになります。
$this->data['table']['fld1'][0][value1] $this->data['table']['fld1'][1][value2]
※ viewdataはあくまで表示用ですので、送信データには含まれません。
後は、$data['table']['fld1']に対して一括でバリデーションをかけるなり、カンマ区切りでデータベースに保存するなりご自由にどうぞ。
- Newer: IEバグ CSSで指定した背景画像が消える
- Older: CakePHP+RSS+SimplePie