我正在尝试在CakePHP3中保存一个具有多对多关系的表单,但我无法正确呈现表单。 (用户HABTM标签)
在我的控制器中,我设置了我想要编辑的对象:
$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'
]);
我的问题是负载没有选中所选标签,我该如何解决?
答案 0 :(得分:2)
对于这样的belongsToMany
关联,您应该使用fieldname中的_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'
]);