【发布时间】:2010-12-17 14:42:15
【问题描述】:
我有一个模型,我需要在保存之前进行一些处理(或在某些情况下进行编辑),但在简单编辑时通常不需要。事实上,如果我对大多数编辑进行处理,结果字段将是错误的。现在,我正在处理模型的 beforeSave 回调。如何判断我是来自编辑还是添加?
弗兰克·卢克
【问题讨论】:
标签: cakephp model callback save edit
我有一个模型,我需要在保存之前进行一些处理(或在某些情况下进行编辑),但在简单编辑时通常不需要。事实上,如果我对大多数编辑进行处理,结果字段将是错误的。现在,我正在处理模型的 beforeSave 回调。如何判断我是来自编辑还是添加?
弗兰克·卢克
【问题讨论】:
标签: cakephp model callback save edit
这与 neilcrookes 的回答基本相同,只是我使用 empty() 作为测试,而不是 !isset()。
如果数组键存在但为空,则 !isset 将返回 false,而 empty 将返回 true。
我喜欢使用相同的视图文件进行添加和编辑,以保持我的代码 DRY,这意味着在添加记录时,'id' 键仍将设置,但不会保留任何内容。 Cake 处理得很好,除了 neilcrookes 版本的代码不会将其识别为添加,因为 primaryKey 键是在数据数组中设置的(即使它什么都不包含)。因此,将 !isset 更改为空就可以解决这种情况。
function beforeSave() {
if (!$this->id && empty($this->data[$this->alias][$this->primaryKey])) {
// insert
} else {
// edit
}
return true;
}
【讨论】:
function beforeSave() {
if (!$this->id && !isset($this->data[$this->alias][$this->primaryKey])) {
// insert
} else {
// edit
}
return true;
}
【讨论】: