В SilverStripe 3.1.13 я пытаюсь установить простые отношения "один ко многим" между DataObjects, администрируемыми ModelAdmin. Существует класс Facility
который может иметь один FacilityCategory
.
Я могу войти на вкладку "Категория объектов", но как только я войду на вкладку " Объект ", "главный" экран исчезнет, а админ заразится с этого момента - никакая вкладка больше не покажет содержимое.
Я удалил все таблицы, начиная с Facility и FacilityCategories, и повторно использовал /dev/build с флешем.
Кто-нибудь пролил бы на меня какой-то свет, почему он не работает? Что не так в моих классах/отношениях?
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'
);
}
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'
);
}
Возможно, что в ваших $summary_fields
(которые, как ожидается, будут закрытыми), вы указали связанный объект категории, а не конкретное поле объекта категории, так что:
private static $summary_fields = array(
'Title',
'Category.Title'
);
$field_labels
как при задании меток в $summary_fields
$field_labels
есть некоторые беспорядочные крайние случаи.
$summary_fields
(которые, как ожидается, будут частными) вы перечислили связанный объект категории, а не определенное поле в объекте категории, поэтому имейте вprivate static $summary_fields = array('Title', 'Category.Title');
, Кроме того, какая-либо конкретная причина, почему вы используете 2 отдельных modelAdmins? Я бы предпочел использовать один и тот же ModelAdmin для управления обеими моделями (поскольку они связаны).