Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverstripe DataExtension和canView_Silverstripe - Fatal编程技术网

Silverstripe DataExtension和canView

Silverstripe DataExtension和canView,silverstripe,Silverstripe,我想在论坛上回答这个问题: 简而言之: 是否可以应用权限方法: canView, canEdit, canDelete, canCreate etc 通过数据扩展 我试过了,但还没有成功,我想知道我是否错过了什么 子类化可能会这样做,但由于DataExtension中有空的权限方法,它们的用途是什么 public function canEdit($member) { } 假设SS3.0+的简短答案是,这取决于 直接的DataObject->can[Create | Edit | Vi

我想在论坛上回答这个问题:

简而言之:
是否可以应用权限方法:

canView, canEdit, canDelete, canCreate etc  
通过数据扩展

我试过了,但还没有成功,我想知道我是否错过了什么

子类化可能会这样做,但由于DataExtension中有空的权限方法,它们的用途是什么

public function canEdit($member) {
}

假设SS3.0+的简短答案是,这取决于

直接的
DataObject->can[Create | Edit | View | Delete]
方法不能以这种方式扩展,但是
SiteTree
的后代大多可以

这里感兴趣的函数是由所有
SiteTree
can*方法调用的,但不是由DataObject can*方法调用的

当然,您始终可以确保在
DataObject
子类中调用此方法

请注意,如果多个扩展正在扩展这些函数,这可能会变得非常复杂。下面是来自
DataObject
类的一些重要文档:

处理来自权限更改扩展的三态响应。扩展预计将返回以下三个值之一:

  • false:不管其他扩展怎么说,都不允许此权限
  • true:只要没有其他扩展返回false,就允许此权限
  • 空:不影响结果

还值得注意的是,任何具有管理员权限的用户都会通过所有这些检查。为管理员用户更改对象权限的唯一方法是对
DataObject

进行子分类,假设SS3.0+简短的回答是,这取决于具体情况

直接的
DataObject->can[Create | Edit | View | Delete]
方法不能以这种方式扩展,但是
SiteTree
的后代大多可以

这里感兴趣的函数是由所有
SiteTree
can*方法调用的,但不是由DataObject can*方法调用的

当然,您始终可以确保在
DataObject
子类中调用此方法

请注意,如果多个扩展正在扩展这些函数,这可能会变得非常复杂。下面是来自
DataObject
类的一些重要文档:

处理来自权限更改扩展的三态响应。扩展预计将返回以下三个值之一:

  • false:不管其他扩展怎么说,都不允许此权限
  • true:只要没有其他扩展返回false,就允许此权限
  • 空:不影响结果

还值得注意的是,任何具有管理员权限的用户都会通过所有这些检查。为管理员用户更改对象权限的唯一方法是对
DataObject

进行子分类。哪个SilverStripe版本?抱歉,SilverStripe 3.0.x哪个SilverStripe版本?抱歉,SilverStripe 3.0.xok thanx!所以我的结论是:这是不可能的。我看到了多重扩展的复杂性。子类化也不是很舒服,因为你不能轻易地将它添加到已经存在的DOs中!所以我的结论是:这是不可能的。我看到了多重扩展的复杂性。子类化也不是很舒服,因为您无法轻松地将其添加到现有的DOs中。