2014-11-04 135 views
1

我有一個簡單的任務,我似乎無法弄清楚。 在SS3中,我如何將一個文件附加到我的數據對象中,換句話說就是創建一個文件上傳字段,並將該文件對象綁定到數據對象。見下面的例子:如何將文件附加到silverstripe中的數據對象3

class myDataObject extends DataObject{ 

public static $db = array(
    'Title' => 'Varchar', 
    'Desc' => 'Text', 
    'Help Text' => 'HTMLText', 
    // 'File Upload (document)' => ??? 
); 

}//class 

注:現在我想要做的只是一個文件,但後來,另一個對象我想要做的多個文件。

回答

7

無法在$ db中設置文件,而是在$ has_one中設置文件,因爲它是與另一個DataObject的關係。

所以,你需要:

private static $has_one = array(
    'FileUpload' => 'File' 
); 

我不認爲空格和括號在$ DB或$ HAS_ONE鍵是一個好主意,因爲它們用於數據庫字段。如果您想爲腳手架領域設置標題,請使用$ field_labels。

private static $field_labels = array(
    'Title' => 'My fancy title', 
    'Desc' => 'Description', 
    'has_one_FileUpload' => 'File upload (document)' 
); 

如果你願意,你就需要把它定義爲$的has_many的$ HAS_ONE insetead多個檔案。

查看http://doc.silverstripe.org/framework/en/tutorials/5-dataobject-relationship-management瞭解更多信息。

+0

非常感謝,這個作品很棒。無法投票,因爲我的代表點太低。 – add 2014-11-05 14:58:59

0
'File Upload (document)' => 'File' 

在CMS中,這會爲您提供添加文件到cms的字段。 File Class

+0

非常感謝您的讚賞。不幸的是,這種解決方案不起作用(1)你的/ dev/build會出錯,該頁面實際上中斷了。 (2)檢查Apache日誌後,你會看到爲什麼它會破壞: [錯誤] [客戶端***。***。***。*] PHP警告:DataObject :: __結構傳遞值'文件上傳(文檔)'。它應該從數據庫中直接傳入一個數組。也許你應該使用DataList :: create() - > First();代替?在/var/www/html/framework/model/DataObject.php在線387 再次感謝您的協助。 – add 2014-11-05 15:03:32