我如何在 SilverStripe 中的版本化数据对象上使用 onAfterPublish() 挂钩之类的东西
How can I use something like the onAfterPublish() hook on a versioned dataobject in SilverStripe
我在 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;
}
用于版本控制 DataObjects
的 Versioned
class 没有 onAfterPublish
挂钩,但它确实有一个 onBeforeVersionedPublish
hook 可以用于发送电子邮件:
public function onBeforeVersionedPublish($fromStage, $toStage, $createNewVersion = false) {
$email = Email::create();
// ...
$email->send();
}
我在 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;
}
用于版本控制 DataObjects
的 Versioned
class 没有 onAfterPublish
挂钩,但它确实有一个 onBeforeVersionedPublish
hook 可以用于发送电子邮件:
public function onBeforeVersionedPublish($fromStage, $toStage, $createNewVersion = false) {
$email = Email::create();
// ...
$email->send();
}