public function __construct() { $this->addComponent(new GridFieldButtonRow('before')); $this->addComponent(new GridFieldAddNewMultiClass('buttons-before-left')); $this->addComponent(new GridFieldAddExistingSearchButton('buttons-before-right')); $this->addComponent(new GridFieldToolbarHeader()); $this->addComponent(new GridFieldTitleHeader()); $this->addComponent(new GridFieldEditableColumns()); $this->addComponent(new GridFieldEditButton()); $this->addComponent(new GridFieldDeleteAction(true)); $this->addComponent(new GridFieldDetailForm()); // Validation // /////////// $component = $this->getComponentByType('GridFieldDetailForm'); $component->setValidator(new RequiredFields(array('FieldName'))); // Sort Order // /////////// $this->addComponent(new GridFieldOrderableRows('SortOrder')); // Inline Editing // /////////////// $component = $this->getComponentByType('GridFieldEditableColumns'); $component->setDisplayFields(array('Label' => array('title' => 'Type', 'field' => 'ReadonlyField'), 'Name' => array('title' => 'Name', 'field' => 'TextField'), 'Prompt' => array('title' => 'Prompt', 'field' => 'TextField'), 'DefaultValue' => array('title' => 'Default Value', 'callback' => function ($record, $column_name, $grid) { return $record->hasMethod('getDefaultValueFormField') ? $record->getDefaultValueFormField('DefaultValue') : new TextField($column_name); }), 'Required' => array('title' => 'Required', 'field' => 'CheckboxField'))); // CSS improvements // ///////////////// FlexiFormUtil::include_requirements(); }