zauberfisch/silverstripe-persistent-dataobject

为 SilverStripe 提供持久化、可选不可变且可版本的 DataObjects

v1.0.0 2020-05-19 01:49 UTC

This package is auto-updated.

Last update: 2024-09-23 14:49:36 UTC


README

为 SilverStripe 提供持久化、可选不可变且可版本的 DataObjects

此模块的两个主要功能是

  1. 一个不可删除的数据对象子类
    调用 ->delete() 将标记对象为已删除,但不会实际删除它
    (在必要时,可以通过调用 ->purge() 来删除对象)
  2. 一个添加版本控制的数据对象扩展
    与 "silverstripe-versioned" 模块相比,版本控制是通过使数据对象不可变并重载 ->write() 来创建当前记录的副本而不是保存现有记录来实现的。
    这意味着 ID 成为唯一的版本号,而额外的 VersionGroupIDVersionGroupLatest 用于跟踪记录之间的关系。这种方法的优点是可以轻松引用条目的某个版本而不是总是引用最新版本。因此,可以实现信息的持久化存储,这些信息可以轻松集成到 SilverStripe 的其他部分(例如,发票可以安全地引用产品价格,而无需创建快照)。

TODOs / 计划中的功能

  • 测试
  • 重新审视将 VersionGroup_ID 放在数据对象上而不是子类上的决定
  • 扩展 GridField 集成
    • 隐藏/显示已删除记录按钮
    • 历史视图,可以从数据对象内部访问旧版本
  • 实现非 GridField 表单字段(例如,允许用户选择条目和版本的关联下拉菜单)
  • 实现引用 VersionGroupID 而不是 ID 的数据库字段/关系?
  • 文档
    • 更详细地解释用例
    • 示例
  • SilverStripe 4 支持