【问题标题】:Silverstripe 3.2: How to export db fields of only one Dataobject in a CSV file?Silverstripe 3.2:如何在 CSV 文件中仅导出一个 Dataobject 的 db 字段?
【发布时间】:2016-04-19 14:27:12
【问题描述】:

我知道有一个GridFieldExportButton 可以导出GridField 的所有数据。但我想要的是一个自定义按钮,它在 CSV 文件中仅导出一个 DataObject 的所有 $db 字段(或其中几个)并下载它。所以我想要这个按钮在这个 DataObject 的编辑区域,而不是显示所有数据对象的 GridField。

我已经有了按钮,现在我需要正确的功能。有人可以帮帮我吗?

【问题讨论】:

  • 也许这会帮助您制定解决方案? github.com/silverstripe/silverstripe-userforms/blob/master/code/… 。在最新版本的用户定义表单上添加了一个导出按钮,当您查看提交时仅导出该 Dataobjects 数据。
  • 感谢您的回答!但不幸的是,这对我不起作用,因为我没有与要导出的字段有 has_many 关系的数据对象。我只想导出数据对象的 $db 字段。你知道怎么做吗?
  • 是的,我注意到它导出关系,但如果它可以导出复杂的东西,大概有一种方法可以修改它来导出非关系的东西:)。遗憾的是,我当时没有时间做一个可行的例子。

标签: field export-to-csv silverstripe data-objects


【解决方案1】:

您可以使用以下内容更改为ModelAdmin 中的任何DataObject 导出的字段:

模型管理员:

class MyModelAdmin extends ModelAdmin {

    ...

    static $managed_models = array(
        'MyDataObject'
    );

    ...

    public function getExportFields() {
        $modelClass = singleton($this->modelClass);

        return $modelClass->hasMethod('getExportFields')
            ? $modelClass->getExportFields()
            : $modelClass->summaryFields();
    }

    ...
}

我的数据对象:

class MyDataObject extends DataObject {

    ...

    public function getExportFields() {
        $exportFields = array(
            //Add all "db" fields here
        );
        return $exportFields;
    }

    ...
}

如果您希望将导出附加到其他按钮,我建议您将按钮更改为链接到 ModelAdmin 导出 CSV 链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2015-12-23
    • 2018-03-02
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多