2014-12-01 25 views
0

我想保存一個CakePHP3中有多對多關係的表單,但是我無法正確呈現表單。 (用戶HABTM標籤)CakePHP3多對多關係

在我的控制器中我設置我想編輯的對象:

$user = $this->Users->get($id, [ 
    'contain' => ['Tags'] 
]); 
$this->set(compact('user')); 

在視圖中我有:

$options = [ 
    '1' => 'Tag 1', 
    '2' => 'Tag 2' 
]; 
echo $this->Form->select('tags', $options, [ 
    'multiple' => 'checkbox' 
]); 

我的問題是負載上的選擇標籤不被檢查,我怎麼能解決這個問題?

回答

1

對於這樣的belongsToMany關聯,您應該使用字段名中的_ids鍵,這樣,表單助手可以神奇地拾取值並檢查您的框。

$this->Form->select('tags._ids', /* ... */); 

的一些信息。

你也應該從表中獲取的標籤列表,而不是在視圖

控制器

// ... 
$tags = $this->Users->Tags->find('list'); 
$this->set(compact('user', 'tags')); 

視圖

echo $this->Form->select('tags._ids', $tags, [ 
    'multiple' => 'checkbox' 
]); 

請參閱手動定義它們也Cookbook > Finding Key/Value Pairs

+0

是的魔法工作時,我把tags._ids作爲名稱謝謝你! – user1521944 2014-12-02 08:58:02