有谁能告诉我如何编写一个函数来拦截silverstripe上的publish命令?我想实现一个系统,每当页面更改即将发生时,都会向另一个系统发送HTTP调用,该调用将通知管理员页面已更改。我希望系统等待几分钟,以便管理员有时间在未经授权的情况下删除更改。
发布于 2012-11-17 17:03:06
在SiteTree类中有各种事件挂钩,您可以使用它们来实现此目的。
class MySiteTreeExtension extends DataExtension {
function onAfterPublish() {
$this->notifyMyAdmin(sprintf('Page "%s" has been published', $this->owner->Title));
}
}将扩展名与以下内容添加到您的mysite/_config.php
Object::add_extension('SiteTree', 'MySiteTreeExtension');显然,您需要实现notifyMyAdmin()方法才能进行该HTTP调用。一般来说,我建议不要对用户操作进行同步HTTP调用,因为它们会使您的系统依赖于另一个操作的可用性。考虑使用像messagequeue模块这样的模块。就“发布等待几分钟”而言:不可能通过扩展系统来“否决”发布。为此,您可以在子类中重写SiteTree->doPublish(),但对于用户来说,这仍然是一种奇怪的UI模式。工作流模块加上“请求发布”,再加上一些cron任务来自动批准它们将会更简单。
https://stackoverflow.com/questions/13414908
复制相似问题