在Silverstripe页面类型上自动创建子页面

Bar*_*vet 0 php silverstripe

我在Silverstripe中有两个名为TeamPage和TeamReport的自定义页面类型.

创建新的TeamPage时,我希望将TeamReport添加为单个子页面 - 使用'/ report /'作为URL slug.

我应该向TeamPage添加什么代码才能实现此目的?

小智 5

为此,我将在检查创建后创建TeamReport一个onAfterWrite方法.TeamPageonBeforeWrite

public function onBeforeWrite() {
    parent::onBeforeWrite();
    $this->IsCreating = !$this->ID;
}

public function onAfterWrite() {
    parent::onAfterWrite();
    if ($this->IsCreating) {
        $child = new TeamReport();
        $child->ParentID = $this->ID;
        $child->URLSegment = 'report';
        $child->Title = 'Report';
        $child->write();
    }
}
Run Code Online (Sandbox Code Playgroud)