0

我不能在较新版本的 Cake 的 beforeSave() 方法中删除,但它适用于较早的库(例如 2.2 版)

有谁知道如何在不改变 Cake 库的情况下让它再次工作?

代码:

public function beforeSave($options = array()) {

if(!empty($this->data['Attachment']['delete']) &&  (int) $this->data['Attachment']['delete'] === 1) {
        if($this->deleteFromDb((int) $this->data['Attachment']['id'])) {
            $this->data['Attachment'] = array();
            return true;
        } else {
            return false;
        }
    }
    return true;
}



public function deleteFromDb($id) {
    if ($this->delete($id)) {
        return true;
    } else {
        return false;
    }
}

以下行返回 false 但我不明白为什么:

if($this->deleteFromDb((int) $this->data['Attachment']['id']))

如果我用以下内容替换它,它仍然返回 false:

if($this->delete((int) $this->data['Attachment']['id']))

如果我从控制器访问该方法,它会返回 true,例如

$this->Model->deleteFromDb($id);

任何帮助都会很棒。

4

1 回答 1

0

我解决了这个问题,在较新的蛋糕库中,您无法从 beforeSave() 中删除,因此我将其移至下一个适当的方法,在我的情况下是 beforeValidate()。

希望这可以帮助某人。

于 2014-09-05T08:16:23.403 回答