我必须从 XML 提要中导入以下结构:
- 公司类型
- 公司子类型
例如:
- 工程
- 结构工程
- 建筑工程
我创建了两个 DataObject,如下所示:
专业标签.ss
class ExpertiseTag extends DataObject {
private static $db = [
'SortID' => 'Int',
'Title' => 'Varchar'
];
private static $has_one = [
'MemberPage' => 'MemberPage'
];
private static $has_many = [
'ExpertiseSubTags' => 'ExpertiseSubTag'
];
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeByName('SortID');
$fields->removeByName('MemberPageID');
$fields->addFieldToTab('Root.Main', TextField::create( 'Title', 'Tag naam' ) );
return $fields;
}
}
ExpertiseSubTag.ss
class ExpertiseSubTag extends DataObject {
private static $db = [
'SortID' => 'Int',
'Title' => 'Varchar'
];
private static $has_one = [
'ExpertiseTag' => 'ExpertiseTag'
];
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeByName('SortID');
$fields->addFieldToTab('Root.Main', TextField::create( 'Title', 'Tag naam' ) );
return $fields;
}
}
也许 ListboxField 不是要走的路,但理想情况下,我想创建一个可以看到嵌套结构并进行多项选择的情况。继续:在持有人页面上,我创建了一个 ListboxField,我想在其中列出两个数据对象,而不是其中一个数据对象。
ListboxField 看起来像这样:
$fields->addFieldToTab('Root.Expertise', ListboxField::create(
'ExpertiseTags',
'Expertise (tags):',
ExpertiseTag::get()->map('ID', 'Title')->toArray(),
$this->ExpertiseTags()->column('ID'),
null,
true
));
如何调整或重新创建代码以实现上述情况?也许 ListboxField 不是去这里的方式。