如何在SilverStripe中的版本化数据对象上使用类似onAfterPublish()挂钩的东西

时间:2016-03-14 19:14:22

标签: 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;
}

1 个答案:

答案 0 :(得分:3)

用于版本控制Versioned的{​​{1}}类没有DataObjects挂钩,但它有一个onBeforeVersionedPublish hook可用于发送电子邮件:

onAfterPublish