我在Node
和NodeTag
之间有hasAndBelongsToMany
关联。如何在CakePHP中为空时保存HasAndBelongsToMany(habtm)数据
当至少有一个被选中时,我保存的效果很好,但是 - 如果有先前的关联,并且他们尝试保存时没有选中,我的habtm
表不会更新,因为它没有得到任何通过NodeTag
。 (我不知道这是因为我使用JavaScript和自定义按钮,还是默认的CakePHP复选框做同样的事情)。
我在Node
和NodeTag
之间有hasAndBelongsToMany
关联。如何在CakePHP中为空时保存HasAndBelongsToMany(habtm)数据
当至少有一个被选中时,我保存的效果很好,但是 - 如果有先前的关联,并且他们尝试保存时没有选中,我的habtm
表不会更新,因为它没有得到任何通过NodeTag
。 (我不知道这是因为我使用JavaScript和自定义按钮,还是默认的CakePHP复选框做同样的事情)。
在我的控制器,保存之前,我添加了这个:
if(!isset($this->request->data['NodeTag'])) {
$this->request->data['NodeTag'][0] = array();
}
这使得它,所以如果我不发送任何数据NodeTag
,我现在通过一个空数组,并更新habtm
表以便此节点不再有任何NodeTags的行。
注:通知阵列结构:['NodeTag'][0] = array();
实际上,我是用你的解决方案,直到我恍然大悟,这是可能的表单助手来实现这一目标。将hiddenField选项设置为true('hiddenField' => true
)将强制提交一个空数组。这样做可以节省您在控制器中再次检查的麻烦。
我不知道如何用javascript实现它,但默认复选框有功能。
'hiddenField'默认为'true',所以将它设置为true什么也不做。是的,它不会从提交中改变它,但它提交的内容(默认情况下)不会更新HABTM数据。 – Dave