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

时间:2014-06-25 11:35:53

标签: php permissions silverstripe

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

public function canEdit($member = null){
    if(permission::check('SUPERUSER')){
        return true;
    }
    return false;
}

...然后一个非管理员无法编辑NewsholderPage,但也会得到一个禁止"禁止"消息,当他试图创建一个NewsPage作为NewsholderPage的子。 允许创建子页面的最佳方法是什么,而不允许编辑父页面?

1 个答案:

答案 0 :(得分:3)

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

public function canAddChildren($member = null) {
  // Call SiteTree::canEdit rather than NewsholderPage::canEdit
  return parent::canEdit($member);
}