GridFieldBulkEditingTools/bulkManager/BULK_MANAGER.md

2.2 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

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