SilverStripe检查是否正在编辑或添加记录?
问题描述:
我有一个扩展,它扩展了家长的onAfterWrite
方法。SilverStripe检查是否正在编辑或添加记录?
<?php
public function onAfterWrite(){
parent::onAfterWrite();
$newTask = new Mytask($this->owner->ID);
$newTask->copyTask();
}
?>
问题:
我想要实例MyTask
类并调用时才被添加新的记录它的方法,而不是在现有记录正在编辑之中。如何检查我们是否只编辑了现有记录或在方法onAfterWrite
中添加了新记录?
感谢
答
我相信,在最初写就不会有ID
集侵害的对象(至少,不会在onBeforeWrite
)。
您可以通过在onBeforeWrite
期间在对象上设置一个标志(例如:$this->isFirstWrite = true
),然后检查它onAfterWrite
来使用它。
更新:正如Barry所说的,有一个叫isInDB
的函数可以使用,它只是检查是否有一个ID--如果我们不再明确依赖ID作为指示器它是否在数据库中。
非常真实 - 我更新了我的文章 –