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;}
它开始按照我的要求工作。但现在用户无法创建新文档:当我按下“创建”按钮时,弹出一个“禁止”的窗口,这个问题在中得到了解决