GridFieldBulkEditingTools/bulkManager/BULK_MANAGER.md

2.4 KiB

Bulk Manager

Perform actions on multiple records straight from the GridField. Comes with unlink, delete and bulk editing. You can also easily create/add your own.

Usage

Simply add component to your GridFieldConfig

	$config->addComponent(new GridFieldBulkManager());

Configuration

The component's options can be configurated individually or in bulk through the 'config' functions like this:

$config->getComponentByType('GridFieldBulkManager')->setConfig($reference, $value);

$config overview

The available configuration options are:

  • 'editableFields' : array of string referencing specific CMS fields available for editing
  • 'fieldsNameBlacklist' : array of string referencing the names of fields that wont be available for editing
  • 'readOnlyFieldClasses' : array of string referencing types (ClassName) of fields that will be transformed to read only (always includes GridField and UploadField)

Custom actions

You can remove or add individual action or replace them all via addBulkAction() and removeBulkAction()

Adding a custom action

To add a custom bulk action to the list use:

$config->getComponentByType('GridFieldBulkManager')->addBulkAction('actionName', 'Dropdown label', 'ActionHandlerClassName', $frontEndConfig)

You can omit the handler's class name and the front-end config array, those will default to:

  • 'GridFieldBulkAction'.ucfirst($name).'Handler'
  • $config = array( 'isAjax' => true, 'icon' => 'accept', 'isDestructive' => false )

Custom action handler

When creating your own bulk action RequestHandler, you should extend GridFieldBulkActionHandler which will expose 2 usefull functions getRecordIDList() and getRecords() returning either an array with the selected records IDs or a DataList of the selected records.

Make sure to define your $allowed_actions and $url_handlers on your custom bulk action handler. See GridFieldBulkActionEditHandler, GridFieldBulkActionDeleteHandler and GridFieldBulkActionUnlinkHandler for examples.

Front-end config

The last addBulkAction() parameter lets you pass an array with configuration options for the UI/UX:

  • isAjax: if true the action will be called via XHR request otherwise the browser will be redirected to the action's URL
  • icon: lets you define which icon to use on the button when the action is selected (SilverStripe button icon name only)
  • isDestructive: if true, a confirmation dialog will be shown before the action is processed