Php Silverstripe禁止编辑页面,但允许创建子页面
我有一个NewsholderPage和NewsPage。新闻页面是NewsholderPage的子页面。 我需要某个组的用户能够创建新闻页面,但不能编辑NewsholderPage。 如果我将以下代码放入NewsholderPagePhp 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; } 。。。然
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);
}