我在hasAndBelongsToMany
和Node
之间建立了NodeTag
关联。
如果选择了至少一个,我的保存效果很好,但是 - 如果有以前的关联,并且他们尝试保存时没有选择,我的habtm
表格不会更新,因为它没有得到任何内容传递给NodeTag
。
(我不确定这是因为我使用的是javascript和自定义按钮,还是默认的CakePHP复选框做同样的事情。)
答案 0 :(得分:2)
在我的控制器中,在保存之前,我添加了这个:
if(!isset($this->request->data['NodeTag'])) {
$this->request->data['NodeTag'][0] = array();
}
这样就可以了,如果我没有发送任何NodeTag
数据,我现在传递一个空数组,并更新habtm
表,以便该节点不再有NodeTags的任何行。
注意:请注意数组结构:['NodeTag'][0] = array();
答案 1 :(得分:0)
我实际上正在使用你的解决方案,直到我意识到可以通过Formhelper实现这一点。将hiddenField选项设置为true('hiddenField' => true
)将强制提交空数组。这样做可以省去在控制器中再次检查的麻烦。
我不知道如何使用javascript实现它,但默认复选框具有功能。