Php Silverstripe禁止编辑页面,但允许创建子页面

Php Silverstripe禁止编辑页面,但允许创建子页面,php,permissions,silverstripe,Php,Permissions,Silverstripe,我有一个NewsholderPage和NewsPage。新闻页面是NewsholderPage的子页面。 我需要某个组的用户能够创建新闻页面,但不能编辑NewsholderPage。 如果我将以下代码放入NewsholderPage public function canEdit($member = null){ if(permission::check('SUPERUSER')){ return true; } return false; } 。。。然

我有一个NewsholderPage和NewsPage。新闻页面是NewsholderPage的子页面。 我需要某个组的用户能够创建新闻页面,但不能编辑NewsholderPage。 如果我将以下代码放入NewsholderPage

public function canEdit($member = null){
    if(permission::check('SUPERUSER')){
        return true;
    }
    return false;
}
。。。然后,当非管理员试图作为NewsholderPage的子级创建新闻页面时,他无法编辑NewsholderPage,但也会收到一条“禁止”消息。
允许创建子页面而不允许编辑父页面的最佳方式是什么?

您需要覆盖NewsholderPage上的
canAddChildren
方法,以返回默认值以外的内容(即
$this->canEdit()
)。要恢复默认行为,可以使用以下方法:

公共函数canAddChildren($member=null){
//调用SiteTree::canEdit而不是NewsholderPage::canEdit
返回父项::canEdit($member);
}