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