蛋糕PHP3 多对多关系



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

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

对于这样的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'
]);

另请参阅查找键/值对>

说明书

最新更新