【发布时间】:2020-06-10 21:56:51
【问题描述】:
我们有一个 Silverstripe 4.x 项目,它使用以下数据对象来创建动态表:
DataColumn
ColumnName
DataRow
RowID
DataCell
Value
has_one DataColumn
has_one DataRow
CMS 用户可以添加/删除/编辑列 - 所以我们不能使用静态数据对象来表示这些数据。
但是,我们希望在 Gridfield 中显示此动态数据并将其导出为 CSV。
我能想到三种可能的方法 - 但我不确定我们应该关注哪一种(或者是否有更好的方法)。
方法 #1:从动态数据创建临时数据对象 我们可以根据动态数据在数据库中创建一个临时数据对象。如果我们这样做了,我们就可以在 Gridfield 中显示临时对象,可以使用标准 Gridfield 功能在其中搜索/过滤/导出等。
方法 #2:将动态数据转换为 Gridfield
是否可以将动态数据转换为DataList 或ArrayList,然后可以在网格字段中显示?这类似于方法 #1,但它是即时完成的,而不是在数据库中创建临时 Dataobject。
方法 #3:为动态数据格式重新编码 Gridfield 功能 这是后备方案,但会涉及重新发明许多轮子 - 所以如果其他两个不可行,这是我们的最后选择。
我们应该采取哪种方法?是否有现有功能可以满足我们的需求?
感谢任何指导。
【问题讨论】:
标签: data-modeling silverstripe silverstripe-4