ユーザーがABCというモデルのエントリを編集できる編集ビューを作成しようとしています。ユーザーが特定の行の編集マスクを開くとすぐに、その行をロックする必要があります。これを行うデータベースに「locked」というtinyint(1)値があります。これがコードの一部です。それはsaveFieldメソッドで発生します、私はすでにそれをチェックしました。正しいレコードで値が変更されているので、奇妙です!しかし、どういうわけかそれは同じタスクを2回実行しようとします、そして私は理由がわかりません。
function edit($id = null) {
// select the
$this->ABC->id = $id;
$session = $this->Session->read();
$this->set('locked',false);
// save or read the data
if (empty($this->data)) {
$this->data = $this->ABC->read();
// locking
if ($this->data["ABC"]["locked"] == true) {
$this->set('usercanedit', false);
$this->set('locked', true);
} else {
$this->ABC->saveField('locked', true);
}
}
}
saveFieldコードをこれに置き換えると(もちろん愚かでテスト用です)、機能します。これはどういうわけか、editメソッドが2回呼び出されたことを証明しています。パラメータがない場合、またはパラメータが間違っている場合。
if($this->ABC->id == 13)
$this->ABC->saveField('locked', true);
誰かがアイデアを持っていますか?