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