1

と のhasAndBelongsToMany間に関連付けがNodeありNodeTagます。

私の保存は、少なくとも 1 つが選択されている場合にうまく機能しますが、以前の関連付けがあり、何も選択されていない状態で保存しようとすると、habtm渡されたものが何も取得されないため、テーブルは更新されませんNodeTag

(これが私が JavaScript とカスタム ボタンを使用しているためなのか、それともデフォルトの CakePHP チェックボックスが同じことをするのかはわかりません)。

4

2 に答える 2

2

私のコントローラーでは、保存する前に、これを追加しました:

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

これにより、データを送信していない場合はNodeTag、空の配列を渡し、habtmテーブルを更新して、この Node に NodeTags の行がなくなるようにします。

注: 配列構造に注意して ください。['NodeTag'][0] = array();

于 2012-12-22T03:53:59.780 に答える
0

Formhelperでこれを達成できることがわかるまで、私は実際にあなたのソリューションを使用していました。hiddenField オプションを true ( 'hiddenField' => true) に設定すると、空の配列が強制的に送信されます。そうすることで、コントローラーでもう一度チェックする手間が省けます。

JavaScript でどのように実現できるかはわかりませんが、デフォルトのチェックボックスには機能があります。

于 2013-11-29T12:09:10.893 に答える