silverstripe/gridfieldqueuedexport

通过异步任务从 SilverStripe CMS 界面的 GridField 中导出大量数据集

安装次数: 147,356

依赖者: 5

建议者: 7

安全性: 0

星标: 10

关注者: 10

分支: 24

开放性问题: 9

类型:silverstripe-vendormodule


README

CI Silverstripe supported module

简介

允许从 GridField 导出大量数据集。通过使用异步任务队列,我们可以避免耗尽 PHP 内存或超出任何最大执行时间限制。

标准 GridField 导出的确切限制取决于服务器配置、服务器容量以及导出的 DataObject 的复杂性。作为一个粗略的指南,当需要导出超过 1000 条记录时,应考虑使用此模块。在标准服务器配置下,该模块应能在几分钟内导出 10,000 条记录。

安装

composer require silverstripe/gridfieldqueuedexport

配置

由于此组件在 GridField 上运行,您可以直接使用它的 addComponent() API。

$gridField = GridField::create('Pages', 'All pages', SiteTree::get())
$config = $gridField->getConfig();
$config->addComponent(GridFieldQueuedExportButton::create('buttons-after-left'));

如果您想替换默认 GridField 配置创建的 GridFieldExportButton,您还需要调用 removeComponentsByType()

// Find GridField
$gridField = $fields->fieldByName('MyGridField');
$config = $gridField->getConfig();

// Add new component
$oldExportButton = $config->getComponentByType(GridFieldExportButton::class);
$config->addComponent($newExportButton = GridFieldQueuedExportButton::create('buttons-after-left'));

// Set Header and Export columns on new Export Button
$newExportButton->setCsvHasHeader($oldExportButton->getCsvHasHeader()); 
$newExportButton->setExportColumns($oldExportButton->getExportColumns());

// Remove original component
$config->removeComponentsByType(GridFieldExportButton::class);

注意:此模块已预配置,可以与 silverstripe/userforms 提交 CSV 导出一起使用。

相关