0

我正在尝试保存一个在 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'
]);

我的问题是加载时未检查所选标签,我该如何解决?

4

1 回答 1

3

对于这样的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 > 查找键/值对

于 2014-12-01T23:16:01.463 回答