我在SilverStripe中有一个简单的版本化数据对象。我试图挂钩发布操作,并在发布数据对象时发送电子邮件。
我不认为onAfterPublish()
方法可用于数据对象(仅限页面),因此我希望模仿该方法或在onAfterWrite()
函数中获得足够的逻辑。
此处是我的代码:
static $has_written = false; // Hack so it only fires once on write()
public function onAfterWrite()
{
parent::onAfterWrite();
if (!self::$has_written) {
$stage = $this->getSourceQueryParam("Versioned.stage");
if ($stage === 'Live') {
$email = new Email();
...
$email->send();
}
}
self::$has_written = true;
}
答案 0 :(得分:3)
用于版本控制Versioned
的{{1}}类没有DataObjects
挂钩,但它有一个onBeforeVersionedPublish
hook可用于发送电子邮件:
onAfterPublish