Экран ModelAdmin для DataObject не открывается

В SilverStripe 3.1.13 я пытаюсь установить простые отношения «один ко многим» между объектами DataObject, администрируемыми ModelAdmin. Eсть Facility класс, который может иметь один FacilityCategory,

Я могу зайти на вкладку «Категория объекта», но как только я вхожу объект На вкладке «главный» экран гаснет, и администратор с этого момента заражается — ни одна вкладка больше не будет отображать содержимое.

Я удалил все таблицы, начиная с Facility и FacilityCategories, и несколько раз делал dev / build с flush.

Кто-нибудь пролил бы свет на меня, почему это не работает? Что плохого в моих занятиях / отношениях?

Facility.php

class Facility extends DataObject {
private static $db = array(
'Title' => 'Varchar',
);

private static $has_one = array(
'Category' => 'FacilityCategory'
);

public static $summary_fields = array(
'Title', 'Category'
);



public function getCMSFields(){
$fields = FieldList::create(
TextField::create('Title'),
DropdownField::create('FacilityCategoryID', 'Category')
->setSource(FacilityCategory::get()->map('ID', 'Title'))
->setEmptyString('-- select a category --')
);
return $fields;
}
}

class FacilityAdmin extends ModelAdmin {
private static $menu_title = 'Facilities';
private static $url_segment = 'facilities';
private static $managed_models = array(
'Facility'
);
}

FacilityCategory.php

class FacilityCategory extends DataObject {
private static $db = array(
'Title' => 'Varchar'
);

private static $has_many = array(
'Facilities' => 'Facility'
);

public function getCMSFields(){
$fields = FieldList::create(
TextField::create('Title')
);
return $fields;
}
}

class FacilityCategoryAdmin extends ModelAdmin {
private static $menu_title = 'Facility Categories';
private static $url_segment = 'facility-categories';
private static $managed_models = array(
'FacilityCategory'
);
}

1

Решение

Может быть, что в вашем $summary_fields (который должен быть закрытым), вы перечислили связанный объект категории, а не определенное поле в объекте категории, поэтому:

private static $summary_fields = array(
'Title',
'Category.Title'
);
2

Другие решения

Других решений пока нет …