前提
前提として以下のような場合のテーブルでHABTMの設定をしているとします。
テーブルのリレーション
モデル
good.php
<strong>tag.php</strong> [php] <strong>goods_has_tag.php</strong> [php]</p><h3 id="ha27a5272fb">チェックボックス作成用のソースコード</h3><p><strong>コントローラー</strong> [php] function add(){ $this->set('tags', $this->Good->Tag->find('list', array( 'conditions' => array( 'Tag.deleted' => null, )))); ... } ビュー input('Tag',array('multiple'=>'checkbox', 'label' => 'タグ')); ?> このように書いておけば、例えば更新画面の場合は$this->dataに入ってるデータをデフォルトでチェックつけた状態で表示されますし。登録の際に$this->Good->saveAll($this->data);とすればgoods_has_tagsテーブルも更新されます。(更新の場合はDELETE、INSERTされます) 個人的にはHABTMでデータ持つのは面倒な気がしていてあまり好きじゃないので、多対多の場合はカンマ区切りで文字列でデータを持たせるように作ってます。 (goodsの場合だと、goods.tagのようなフィールドを作って文字列で) 文字列で持たせる場合も、以下のコードでチェックボックスを作成できます。 input('tag', array('type' => 'select', 'multiple' => 'checkbox', 'options' => Invariable::$TAG_TYPES, 'value' => explode(',', $this->data['Good']['tag']), 'label' => 'タグ')); ?> ※タグは定数Invariable::$TAG_TYPESで管理。