Silverstripe在新版本中针对数据对象的版本化功能(3.2)

时间:2013-02-21 00:33:46

标签: silverstripe

我想审计跟踪对dataobjects所做的所有更改。假设我有事件数据对象,我想知道谁更改了它,更改时,更改了什么等(类似于Pages)。 Silverstripe网站建议使用Verioned,但我找不到任何实施例子。它说最好的例子是已经实现Versioned的Pages。基本规则是在装饰器上定义augmentDatabase()方法。 所以,我想将DataExtention用于dataobject(扩展),然后将扩展的数据用于我的Event dataobject。但有没有简单的例子?

2 个答案:

答案 0 :(得分:3)

假设您要管理和监视事件DataObject的多个版本,您只需要声明要为该DataObject使用版本化扩展

Class Event extends DataObject{
    static $extensions = array(
    "Versioned('Stage', 'Live')"
);
    ...
}

然后运行dev / build 您现在应该有一个Event,Event_Live和Event_versions表。 然后,您可以查看Versioned.php中可用的方法,并将它们与Event一起使用,即publish()。这应该可以帮到你。

答案 1 :(得分:2)

“SilverStripe中的版本控制是通过Versioned类处理的。它是一个DataExtension,允许它应用于任何DataObject子类。”

“同样,您在版本化基础之上创建的任何子类都将触发创建其他表,这些表会根据需要自动加入。”

这是通过示例进一步阅读的链接 Versioning of Database Content