2016-01-14 25 views
2

我知道有一個GridFieldExportButton,它導出一個網格的所有數據。但是我想要的是一個自定義Button,它將cvs文件中只有一個數據對象的所有$ db字段(僅包含其中的一部分)導出並下載。所以我希望這個按鈕在這個數據對象的編輯區域,而不是顯示所有數據對象的網格區域。Silverstripe 3.2:如何導出cvs文件中只有一個Dataobject的db字段?

我已經有了按鈕,現在我需要正確的功能。有人能幫助我嗎?

+0

也許這會幫助你制定一個解決方案? https://github.com/silverstripe/silverstripe-userforms/blob/master/code/model/submissions/SubmittedForm.php。在用戶定義表單的最新版本中,當您查看提交時只會導出該Dataobjects數據時會添加一個導出按鈕。 –

+0

感謝您的回答!但不幸的是,這並不適合我,因爲我沒有與要導出的字段具有has_many關係的數據對象。我只想導出數據對象的$ db字段。你有一個想法如何做到這一點? – iraira

+0

是的,我注意到它導出關係,但如果它可以導出複雜的東西,可能有一種方法來修改它導出非關係的東西也:)。可悲的是,我當時沒有時間做一個實例。 –

回答

0

您可以更改的ModelAdmin eported任何數據對象有以下字段...

的ModelAdmin變化......

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鏈接

相關問題