<?php class GridFieldCategorisationConfig extends GridFieldConfig_RecordEditor { /** * @param int $itemsPerPage * @param array|SS_List $mergeRecords * @param string $parentType * @param string $parentMethod * @param string $childMethod */ public function __construct($itemsPerPage = 15, $mergeRecords, $parentType, $parentMethod, $childMethod) { parent::__construct($itemsPerPage); $this->removeComponentsByType('GridFieldAddNewButton'); $this->addComponent( new GridFieldAddByDBField('buttons-before-left') ); $this->addComponent( new GridFieldMergeAction($mergeRecords, $parentType, $parentMethod, $childMethod) ); /** * @var GridFieldDataColumns $columns */ $columns = $this->getComponentByType('GridFieldDataColumns'); $columns->setFieldFormatting(array( 'BlogPostsCount' => function ($value, CategorisationObject $item) { return $item->BlogPosts()->Count(); } )); $this->changeColumnOrder(); } /** * Reorders GridField columns so that Actions is last. */ protected function changeColumnOrder() { /** * @var GridFieldDataColumns $columns */ $columns = $this->getComponentByType('GridFieldDataColumns'); $columns->setDisplayFields(array( 'Title' => 'Title', 'BlogPostsCount' => 'Posts', 'MergeAction' => 'MergeAction', 'Actions' => 'Actions', )); } }