说明书
我正在尝试保存一个在 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'
]);
另请参阅查找键/值对>