Export large data sets from your GridField in the SilverStripe CMS interface through async jobs
Allows for large data set exports from a GridField
. By using an asynchronous job queue, we avoid
running out of PHP memory or exceeding any maximum execution time limits.
The exact limitations of a standard GridField
export vary based on the server configuration,
server capacity and the complexity of the exported DataObject
.
As a rough guide, you should consider using this module
when more than 1000 records need to be exported. The module should be able to export
10,000 records on a standard server configuration within a few minutes.
Note: For SilverStripe 3.x, please use the 1.x release line.
To install run composer require silverstripe/gridfieldqueuedexport
.
Since this component operates on a GridField
, you can simply use it's addComponent()
API.
$gridField = GridField::create('Pages', 'All pages', SiteTree::get())
$config = $gridField->getConfig();
$config->addComponent(GridFieldQueuedExportButton::create('buttons-after-left'));
If you want to replace the GridFieldExportButton
created by the default GridField configuration,
you also need to call 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);
Note: This module is preconfigured to work with the
silverstripe/userforms
submission CSV export.
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem