Я изо всех сил пытаюсь добавить функцию сортировки в одно из полей сводки моих участников в админке.
Я расширил класс члена Silverstripe, используя:
class MyMemberExtension extends DataExtension
Я добавил несколько полей в сетку по умолчанию в админке:
private static $db = array(
'Organisation' => 'Varchar(100)'
);
private static $summary_fields = array(
'FirstName' => 'First Name',
'Surname' => 'Surname',
'Email' => 'Email',
'OrganisationName' => 'Organisation Name',
'LastVisited' => 'Last Visited',
'NumVisit' => 'Num Visits'
);
private static $casting = array(
'OrganisationName' => 'Varchar(100)'
);
public function getOrganisationName() {
return $this->owner->Organisation;
}
... и все это прекрасно работает.
Однако только основные поля, такие как LastVisited, дают мне стрелки сортировки в заголовках столбцов.
В настоящее время я застрял в том, как реализовать сортировку в моем поле "Организация". Я пробовал добавить:
public function getCMSFields()
{
$fields = parent::getCMSFields();
$grid = $fields->dataFieldByName('Organisation');
$gridConfig = $grid->getConfig();
$gridConfig->addComponent(new GridFieldSortableHeader());
return $fields;
}
public function getEditForm($id = null, $fields = null) {
$form=parent::getEditForm($id, $fields);
$model = singleton($this->modelClass);
// add sorting if we have a field for...
if (class_exists('GridFieldSortableRows')
&& $model->hasField('Organisation')
&& $gridField=$form->Fields()->dataFieldByName($this->sanitiseClassName($this->modelClass))) {
if($gridField instanceof GridField) {
$gridField->getConfig()->addComponent(new GridFieldSortableRows('Organisation'));
}
}
return $form;
}
... моему классу, но я не уверен, что они даже вызываются, так как даже если я просто верну null из этих двух функций, ничего не изменится.
Я нашел несколько ответов, касающихся расширений ModelAdmin, но не основного списка участников. Спасибо!