У меня есть следующая структура, которую я должен импортировать из XML-канала:
например:
- Engineering
- структурно-инжиниринговая
- архитектурно-инженерный
Я создал оба объекта DataObject, которые выглядят так:
ExpertiseTag.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 не подходит для этого.