Silverstripe 如何定制CMS?

Silverstripe 如何定制CMS?,silverstripe,Silverstripe,我创建了简单的数据对象: class Documents extends DataObject { private static $db = array( 'DocType' => 'Text', 'ApprovalDate' => 'Date', 'PublicationDate' => 'Date', 'DocNumber' => 'Text', 'DocTitle' => 'Tex

我创建了简单的数据对象:

class Documents extends DataObject {
     private static $db = array(
       'DocType' => 'Text',
       'ApprovalDate' => 'Date',
       'PublicationDate' => 'Date',
       'DocNumber' => 'Text',
       'DocTitle' => 'Text'

);

private static $has_one = array(
      'Member' => 'Member'
);
请告诉我如何自定义我的ModelAdmin,以便所有用户只能查看所有对象,并且只有所有者(ID==MemberID的用户)可以编辑和删除他的对象? 因此,我希望看到这样的图片:[ ]

我尝试使用这样的代码:

if (!(Member::currentUserID() ==  $Value_of_MemberID_Field   )) {
    $gridfieldConfig->removeComponentsByType('GridFieldDeleteAction')
        ->removeComponentsByType('GridFieldEditButton');
    // add a view button
    $gridfieldConfig
            ->addComponent(new GridFieldViewButton());
}

如何获取GridField行中的\u MemberID\u字段的$Value\u

您可能应该查看模型权限:

对于您的示例,它可能看起来像这样:

public function canEdit($member = null) {
    return (Member::currentUserID() == $this->MemberID);
}

public function canDelete($member = null) {
    return (Member::currentUserID() == $this->MemberID);
}

我发现,如果验证失败,返回默认处理程序是很有用的,这通常是管理员可以做到的。例如:
return(Member::currentUserID()=$this->MemberID)| | parent::canDelete($Member)public function canView($member=null){return true;}
public function canCreate($member=null){return true;}
它开始按照我的要求工作。但现在用户无法创建新文档:当我按下“创建”按钮时,弹出一个“禁止”的窗口,这个问题在中得到了解决