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