Reputation: 229
I am using gridfieldextensions and GridFieldEditableColumns on a GridFieldConfig_RelationEditor.
How can the GridField - Actions be moved to the right?
[![enter image description here][1]][1]
class StaffCatObject extends DataObject
private static $many_many = array(
'Staffs' => 'Staff'
);
private static $many_many_extraFields = array(
'Staffs' => array(
'SortOrder' => 'Int',
'Display' => 'Boolean(1)'
),
);
public function getCMSFields() {
$fields = parent::getCMSFields();
.......
$GridFieldConfig = GridFieldConfig_RelationEditor::create();
$GridFieldConfig->removeComponentsByType('GridFieldPaginator');
$GridFieldConfig->addComponent(new GridFieldPaginator(20));
$GridFieldConfig->addComponent(new GridFieldEditableColumns());
$GridFieldConfig->addComponent( new GridFieldDeleteAction());
$items = $this->Staffs();
if (class_exists('GridFieldOrderableRows') && !$items instanceof UnsavedRelationList) {
$GridFieldConfig->addComponent(new GridFieldOrderableRows('SortOrder'));
}
$gridfield = new GridField("Staff", $this->StaffCatTitle, $this->Staffs()->sort('SortOrder'), $GridFieldConfig); //->sort('SortOrder')
$gridfield->getConfig()->getComponentByType('GridFieldEditableColumns')->setDisplayFields(array(
'Display' => array(
'callback' => function ($record, $column, $gridfield) {
return new CheckboxField('Display');
},
'title' => 'Display'
),
'AdImpressum' => array(
'title' => 'Ad Impressum',
'field' => 'CheckboxField'
)
));
$fields->addFieldToTab('Root.Main', $gridfield);
return $fields;
class Staff extends DataObject
private static $belongs_many_many = array(
'StaffCatObjects' => 'StaffCatObject'
);
static $summary_fields = array(
'Thumbnail' => 'Thumbnail',
'StaffTitle' => 'Name',
'Email' => 'Email',
'CheckDisplay' => 'wird angezeigt in'
);
Upvotes: 3
Views: 463
Reputation: 951
You are appending the end of the GridField. One solution is to empty the Actions column with the following code:
$config->removeComponentsByType('GridFieldDeleteAction');
$config->removeComponentsByType('GridFieldEditButton');
Just after creating the GridField, and then readd them after adding GridFieldEditableColumns with the following code:
$config->addComponent(new GridFieldEditButton());
$config->addComponent(new GridFieldDeleteAction());
Hint: Your first initialization is unnecessary:
$GridFieldConfig = GridFieldConfig_RelationEditor::create();
$GridFieldConfig->removeComponentsByType('GridFieldPaginator');
$GridFieldConfig->addComponent(new GridFieldPaginator(20));
$GridFieldConfig->addComponent(new GridFieldEditableColumns());
$GridFieldConfig->addComponent( new GridFieldDeleteAction());
It can be done with just:
$GridFieldConfig = GridFieldConfig_RelationEditor::create(20);
More info here: https://github.com/silverstripe/silverstripe-framework/blob/3.4.5/forms/gridfield/GridFieldConfig.php#L232
Upvotes: 2