1

我在和之间有hasAndBelongsToMany关联。NodeNodeTag

当至少选择一个时,我的保存效果很好,但是 - 如果有以前的关联,并且他们尝试在没有选择的情况下保存,我的habtm表不会更新,因为它没有得到任何传递NodeTag

(我不确定这是否是因为我使用了 javascript 和自定义按钮,或者默认的 CakePHP 复选框是否做同样的事情)。

4

2 回答 2

2

在我的控制器中,在保存之前,我添加了这个:

if(!isset($this->request->data['NodeTag'])) {
    $this->request->data['NodeTag'][0] = array();
}

这使得如果我没有发送任何NodeTag数据,我现在传递一个空数组,它会更新habtm表,以便该节点不再有任何用于 NodeTag 的行。

注意: 注意数组结构: ['NodeTag'][0] = array();

于 2012-12-22T03:53:59.780 回答
0

我实际上一直在使用您的解决方案,直到我意识到可以使用 Formhelper 来实现这一点。将 hiddenField 选项设置为 true ( 'hiddenField' => true),将强制提交一个空数组。这样做可以省去在控制器中再次检查的麻烦。

我不知道您如何使用 javascript 实现它,但默认复选框具有该功能。

于 2013-11-29T12:09:10.893 回答