我尝试创建一个编辑视图,允许用户编辑名为 ABC 的模型的条目。一旦用户打开某一行的编辑掩码,它就应该锁定该行。我在数据库中有一个名为 'locked' 的 tinyint(1) 值来执行此操作。这是代码的一部分。它发生在 saveField 方法上,我已经检查过了。这很奇怪,因为正确记录上的值发生了变化!但不知何故,它试图两次执行相同的任务,我不知道为什么。
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 代码时(这当然是愚蠢的,只是为了测试)它可以工作。这以某种方式证明了编辑方法被调用了两次。一次没有参数,或者参数错误..
if($this->ABC->id == 13)
$this->ABC->saveField('locked', true);
有人有想法吗?