Bulk editing now use the normal Form submission system and handles all field type, including ajax dependent
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 URLicon
: 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