1

我必须从 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 不是去这里的方式。

4

0 回答 0