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)
这与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)