silverstripe / gridfieldqueuedexport
Export large data sets from your GridField in the SilverStripe CMS interface through async jobs
Installs: 96 309
Dependents: 5
Suggesters: 7
Security: 0
Stars: 10
Watchers: 9
Forks: 22
Open Issues: 8
Type:silverstripe-vendormodule
Requires
- php: ^7.4 || ^8.0
- league/csv: ^8 || ^9
- silverstripe/framework: ^4.10
- symbiote/silverstripe-queuedjobs: ^4
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.0
- 3.x-dev
- 2.x-dev
- 2.7.x-dev
- 2.7.0
- 2.7.0-rc1
- 2.7.0-beta1
- 2.6.x-dev
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.x-dev
- 2.5.1
- 2.5.0
- 2.5.0-rc1
- 2.5.0-beta1
- 2.5.0-alpha1
- 2.4.x-dev
- 2.4.0
- 2.4.0-rc1
- 2.4.0-beta1
- 2.3.x-dev
- 2.3.0
- 2.2.x-dev
- 2.2.0
- 2.1.x-dev
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 2.0.0-beta1
- 1.x-dev / 1.2.x-dev
- 1.1.x-dev
- 1.1.0
- 1.0.x-dev
- 1.0.0
- 1.0.0-rc2
- 1.0.0-rc1
- dev-master
This package is auto-updated.
Last update: 2023-01-22 21:30:05 UTC
README
Introduction
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.
Requirements
- Silverstripe 4.0+
- The queuedjobs module
Note: For Silverstripe 3.x, please use the 1.x release line.
Installation
To install run composer require silverstripe/gridfieldqueuedexport
.
Configuration
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.
Related
- silverstripe/queuedjobcsvexport: General purpose CSV exports through queuedjobs (without a dependency on GridField)