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

Fra*_*uke 11 cakephp model edit callback save

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

弗兰克卢克

nei*_*kes 19

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


jos*_*ing 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;
}
Run Code Online (Sandbox Code Playgroud)