2014-12-01 102 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