SilverStripe删除CSV导出按钮

SilverStripe删除CSV导出按钮,silverstripe,Silverstripe,我试图删除ModelAdmin中GridField顶部的导出到CSV按钮 我似乎找不到创建按钮的类(GridFieldExportButtonright?)。我猜有一个函数用我不熟悉的按钮/操作填充GridField。要删除关系的脚手架GridField class MyDataObject extends DataObject { ... private static $has_many= array( 'OtherDataObjects' => 'O

我试图删除
ModelAdmin
GridField
顶部的导出到CSV按钮


我似乎找不到创建按钮的类(
GridFieldExportButton
right?)。我猜有一个函数用我不熟悉的按钮/操作填充GridField。

要删除关系的脚手架GridField

class MyDataObject extends DataObject {

    ...

    private static $has_many= array(
        'OtherDataObjects' => 'OtherDataObject'
    );

    ...

    function getCMSFields() {
        $fields = parent::getCMSFields();

        if($grid = $fields->dataFieldByName('OtherDataObjects'))
            $grid->getConfig()
                ->removeComponentsByType('SilverStripe\Forms\GridField\GridFieldExportButton');

        return $fields;
    }

    ...

}
如果您正在创建GridField,那么在创建字段时只需添加此项即可

$gridField->getConfig()->removeComponentsByType('SilverStripe\Forms\GridField\GridFieldExportButton'); 
如果您要查找的gridfield不在数据对象编辑表单中,并且实际上是

class MyAdmin extends ModelAdmin {

    ...

    function getEditForm($id = null, $fields = null) {
        $form = parent::getEditForm($id, $fields);

        if($this->modelClass == 'MyDataObjectName') {
            $form->Fields()
                ->fieldByName($this->sanitiseClassName($this->modelClass))
                ->getConfig()
                ->removeComponentsByType('SilverStripe\Forms\GridField\GridFieldExportButton');
        }
        return $form;
    }

    ...
}
将model_importers设置为空将执行相反的操作并删除导入

class MyAdmin extends ModelAdmin {

    ...

    static $model_importers = array();

    ...
}

这似乎摆脱了导入功能,而不是导出按钮。顺便说一句,这也很有价值,因为我也想对用户隐藏这一点。真的!更新内容包括删除您实际询问的按钮MyFieldName'应该是DataObject类名吗?对不起,我不明白为什么任何$db字段都应该寻址以删除导出按钮。DataObject有几个$db字段,我应该在其中放哪一个?不确定此解决方案是否用于ss3,但为了在ss4中工作,您需要写入组件的完整路径,
removeComponentsByType('SilverStripe\Forms\GridField\GridFieldExportButton')
——否则无法找到该组件。