Php DataObject的ModelAdmin屏幕未打开
在SilverStripe 3.1.13中,我试图在ModelAdmin管理的数据对象之间建立一个简单的一对多关系。有一个Php DataObject的ModelAdmin屏幕未打开,php,silverstripe,data-objects,modeladmin,Php,Silverstripe,Data Objects,Modeladmin,在SilverStripe 3.1.13中,我试图在ModelAdmin管理的数据对象之间建立一个简单的一对多关系。有一个设施类,它可以具有一次性设施类别 我可以进入“设施类别”选项卡,但一旦我进入“设施”选项卡,“主”屏幕将变为空白,从那时起管理员将被污染-没有选项卡将再显示内容 我删除了从Facility和FacilityCategories开始的所有表,并使用flush重复进行开发/构建 有人能告诉我为什么它不起作用吗?我的班级/关系有什么问题 Facility.php FacilityC
设施
类,它可以具有一次性设施类别
我可以进入“设施类别”选项卡,但一旦我进入“设施”选项卡,“主”屏幕将变为空白,从那时起管理员将被污染-没有选项卡将再显示内容
我删除了从Facility和FacilityCategories开始的所有表,并使用flush重复进行开发/构建
有人能告诉我为什么它不起作用吗?我的班级/关系有什么问题
Facility.php
FacilityCategory.php
可能是在您的
$summary\u字段中(预计为私有字段),您列出了相关的类别对象,而不是类别对象上的特定字段,因此:
private static $summary_fields = array(
'Title',
'Category.Title'
);
可能是在您的$summary_fields
(预计是私有的)中,您列出了相关的类别对象,而不是类别对象上的特定字段,因此有私有静态$summary_fields=array('Title','category.Title')代码>。另外,您使用两个单独的modelAdmins有什么特别的原因吗?我倾向于使用同一个ModelAdmin来管理这两个模型(因为它们是相关的)。@jpmcc靶心!就这样。很好的一课。请复制您的评论作为答案,您将被接受。根据两个单独的ModelAdmins,这是我第一个直观的选择,将admin内容与相应的DataObject类放在同一个文件中,但如果我告诉我,例如,这种方法会影响性能,我肯定会按照您的方式进行。对不起,不是想挑三拣四什么的。不确定性能。只需添加一个额外的内容,您可能需要将“Category.Title”摘要字段的标签更改为其他内容。因为在$summary\u字段中指定标签时会出现一些混乱的边缘情况。这一点很好。我同意这一点。如果需要本地化,也非常有用。
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'
);
}
private static $summary_fields = array(
'Title',
'Category.Title'
);