2.5 KiB
Grid Field Extensions
Add Existing Search
The GridFieldAddExistingSearchButton
component provides a more complete solution for adding
existing records than a basic autocomplete. It uses the search context constructed by the model
class to provide the search form.
$grid->getConfig()->addComponent(new GridFieldAddExistingSearchButton()));
Inline Editing
This example replaces the default data columns component with an inline editable one, and the default add new button with one that adds new records inline.
$grid = new GridField(
'ExampleGrid',
'Example Grid',
$this->Items(),
GridFieldConfig::create()
->addComponent(new GridFieldButtonRow('before'))
->addComponent(new GridFieldToolbarHeader())
->addComponent(new GridFieldTitleHeader())
->addComponent(new GridFieldEditableColumns())
->addComponent(new GridFieldDeleteAction())
->addComponent(new GridFieldAddNewInlineButton())
);
You can customise the form fields that are used in the grid by calling setDisplayFields
on the
inline editing component. By default field scaffolding will be used.
$grid->getConfig()->getComponentsByType('GridFieldEditableColumns')->setDisplayFields(array(
'FirstField' => function($record, $column, $grid) {
return new TextField($column);
},
'SecondField' => array(
'title' => 'Custom Title',
'field' => 'ReadonlyField'
)
));
Editing data contained in many_many_extraFields
is supported - just treat it as you would any
other field.
Multi Class Adding
The GridFieldAddNewMultiClass
allows the user to select the record type to create when creating
a new record. By default it allows them to select the model class for the grid field, or any
subclasses. You can control the createable classes using the setClasses
method.
$grid->getConfig()
->removeComponentsByType('GridFieldAddNewButton')
->addComponent(new GridFieldAddNewMultiClass());
Orderable Rows
The GridFieldOrderableRows
component allows drag-and-drop reordering of any list type. The field
used to store the sort is set by passing a constructor parameter to the component, or calling
setSortField
. For many_many
relationships, the sort field should normally be an extra field on
the relationship.
// Basic usage, defaults to "Sort" for the sort field.
$grid->getConfig()->addComponent(new GridFieldOrderableRows());
// Specifying the sort field.
$grid->getConfig()->addComponent(new GridFieldOrderableRows('SortField'));