doukong1901 2014-10-12 22:05
浏览 30
已采纳

如何在Silverstripe CMS中将大量子对象下载为CSV?

I'm working on a Silverstripe project which has a Batch > Item relationship.

A Batch can have up to 50,000 Items.

This is how the relationship is set-out:

class Item extends DataObject {

  private static $has_one = array(
      'Batch' => 'Batch'
  );

class Batch extends DataObject {

  private static $has_many = array(
      'Items' => 'Item'
  );

class BatchAdmin extends ModelAdmin {

  private static $managed_models = array(
      'Batch',
      'Item'
  );

This natively gives the CMS user the ability to download all Items as a CSV from the CMS.

I'm trying to work out two things:

  1. How do I make sure that large downloads don't fail due to lack of memory/ script time etc?

  2. How do I add an "Export to CSV" button to each Batch which downloads only the Items in that batch as a CSV?

  • 写回答

1条回答 默认 最新

  • duanbinren8906 2014-10-15 23:52
    关注

    To add an Export to CSV button to Batch which exports the related Items we add a GridFieldExportButton to the Batch CMSFields:

    class Batch extends DataObject {
    
        private static $has_many = array(
            'Items' => 'Item'
        );
    
        public function getCMSFields() {
            $itemsConfig = GridFieldConfig_RelationEditor::create();
            $itemsConfig->addComponent(new GridFieldExportButton());
    
            $itemsField = new GridField(
                'Items',
                'Items',
                $this->Items(),
                $itemsConfig
            ); 
    
            $fields = new FieldList(
                $itemsField
            );
    
            return $fields;
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝