如何判断我是否在编辑或创建之前保存? CakePHP的

时间:2009-11-17 20:17:06

标签: cakephp model callback save edit

我有一个模型,我需要在保存之前(或在某些情况下进行编辑)进行一些处理,但通常不需要简单编辑。实际上,如果我对大多数编辑进行处理,结果字段将是错误的。现在,我正在使用模型的beforeSave回调。如何判断我是来自编辑还是添加?

Frank Luke

2 个答案:

答案 0 :(得分:19)

function beforeSave() {
  if (!$this->id && !isset($this->data[$this->alias][$this->primaryKey])) {
    // insert
  } else {
    // edit
  }
  return true;
}

答案 1 :(得分:9)

这与neilcrookes的答案基本相同,只是我使用empty()作为测试,而不是!isset()

如果数组键存在但是为空,则!isset将返回false,而empty将返回true。

我喜欢使用相同的视图文件进行添加和编辑,以保持我的代码DRY,这意味着在添加记录时,“id”键仍将设置,但不会保留任何内容。 Cake处理这个很好,除了neilcrookes版本的代码不会将它识别为add,因为primaryKey键是在数据数组中设置的(即使它什么也没有)。所以,改变!就是为了解决这种情况而空了。

function beforeSave() {
  if (!$this->id && empty($this->data[$this->alias][$this->primaryKey])) {
    // insert
  } else {
    // edit
  }
  return true;
}