首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverstripe函数截取

问Silverstripe函数截取
EN

Stack Overflow用户
提问于 2012-11-16 18:38:12
回答 1查看 97关注 0票数 0

有谁能告诉我如何编写一个函数来拦截silverstripe上的publish命令?我想实现一个系统,每当页面更改即将发生时,都会向另一个系统发送HTTP调用,该调用将通知管理员页面已更改。我希望系统等待几分钟,以便管理员有时间在未经授权的情况下删除更改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-17 17:03:06

在SiteTree类中有各种事件挂钩,您可以使用它们来实现此目的。

代码语言:javascript
复制
class MySiteTreeExtension extends DataExtension {
    function onAfterPublish() {
        $this->notifyMyAdmin(sprintf('Page "%s" has been published', $this->owner->Title));
    }
}

将扩展名与以下内容添加到您的mysite/_config.php

代码语言:javascript
复制
Object::add_extension('SiteTree', 'MySiteTreeExtension');

显然,您需要实现notifyMyAdmin()方法才能进行该HTTP调用。一般来说,我建议不要对用户操作进行同步HTTP调用,因为它们会使您的系统依赖于另一个操作的可用性。考虑使用像messagequeue模块这样的模块。就“发布等待几分钟”而言:不可能通过扩展系统来“否决”发布。为此,您可以在子类中重写SiteTree->doPublish(),但对于用户来说,这仍然是一种奇怪的UI模式。工作流模块加上“请求发布”,再加上一些cron任务来自动批准它们将会更简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13414908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档