我在Silverstripe 3中創建了一個站點,並且在將KMZ/KML文件上傳到CMS中時出現了一個奇怪的問題。如何啓用Silverstripe上傳KMZ/KML/GPX文件?
最終目標是允許CMS用戶將多個KMZ/KML/GPX文件上傳到頁面。這些文件將在Google地圖上顯示爲路線。
這是的has_many聲明:
static $has_many = array(
'RouteFiles' => 'File'
);
這是getCMSFields代碼:
$routeFilesField = new UploadField('Route Files', 'Upload GPX/KMZ/KML files for your proposed route.', $this->RouteFiles());
$routeFilesField->getValidator()->allowedExtensions = array('kmz', 'kml', 'gpx');
$fields->addFieldToTab('Root.Map', $routeFilesField);
我已經加入了擴展的/assets/.htaccess文件的FilesMatch部分。
當我上傳的KMZ或KML文件到CMS我得到在上傳字段下面的消息:找不到
文件信息還有什麼,我需要做的,使這項工作?
在SS 3.1中,調用'File :: $ allowed_extensions'會引發一個致命錯誤,因爲它是一個私有屬性。爲了解決這個問題,你可以使用配置系統來獲得擴展名('$ extensions = File :: config() - > allowed_extensions;'),添加你的項目('extensions [] ='kml';')和然後設置值('File :: config() - > allowed_extensions = $ extensions;')。 – Turnerj
或者如您[在另一個答案](http://stackoverflow.com/a/25298213/1676444)中指定的那樣,您可以使用YAML配置文件添加其他允許的擴展名。 – Turnerj