SilverStripe GridField component to upload images/files and edit records in bulk

Installs: 529 813

Dependents: 47

Suggesters: 12

Security: 0

Stars: 87

Watchers: 16

Forks: 76

Open Issues: 28



⚠️ I haven't been able to give as much love as I would like to these repos as they deserve. If you have time and are interested to help maintain them, give me a shout. 🚨

GridField Bulk Editing Tools

Latest Stable Version Latest Unstable Version License

Set of SilverStripe 4 GridField components to facilitate bulk file upload & record editing.


  • Bulk Upload: Upload multiple images or files at once into DataObjects
  • Bulk Manager: Delete, Unlink, Edit (and more) multiple records at once


  • SilverStripe 4.0 (master / 3.+)
  • SilverStripe 3.1 (version 2.+ / 1.+)
  • Silverstripe 3.0 (version 0.5)


composer require colymba/gridfield-bulk-editing-tools

3.0.0 deprecations

The 3.x versions of this module require SilverStripe 4.x+, and PHP 5.5 or above:

  • Namespaces are implemented, and some class names have changed (see .upgrade.yml for mapping)

2.0.0 deprecations

Major deprections in latest 2.0.0 release:

  • The GridFieldBulkImageUpload has been renamed to GridFieldBulkUpload.
  • onBulkImageUpload callback has been renamed to onBulkUpload

Bulk Upload

Upload multiple images or files at once into DataObjects. Perfect for galleries and the like.

$config->addComponent(new \Colymba\BulkUpload\BulkUploader());


By default BulkUploader will write to the current stage (most likely Draft). To auto publish your DataObject, use the following param or config:

$config->addComponent(new \Colymba\BulkUpload\BulkUploader(null, null, true));



Your DataObject should own the Image/File relation so it is published at the same time: See SilverStripe DataObject ownership DOC

See for detailed configuration.

Bulk Manager

Perform actions on multiple records straight from the GridField

$config->addComponent(new \Colymba\BulkManager\BulkManager());

See for detailed configuration.


  • npm run watch for development
  • npm run dist before pushing to the repo


Translations of the natural language strings are managed through a third party translation interface,

Please use to contribute translations, rather than sending pull requests with YAML/JS files.

License and Copyright

BSD 3-clause license