我想知道是否有一个UploadField的扩展,允许上传120张图片,而不是同时上传?这导致I / O服务器问题没有响应过度使用。那么如何一次排队一张图像呢?我不想一个一个上传图片。模块某处或代码片段?
在我的项目中添加了GridFieldBulkEditingTools:
private static $many_many = array(
'Images' => 'Image',
);
...
$gridFieldConfig->addComponent(new GridFieldSortableRows('SortOrder'));
$gridFieldConfig->getComponentByType('GridFieldBulkUpload')
->setUfSetup('setFolderName', 'Uploads/Images/Rubriques/Galerie')
->setUfConfig('sequentialUploads', true);
$gridfield = new GridFieldBulkUpload("Images", "Images", $this->Images()->sort("SortOrder"), $gridFieldConfig);
结果......空白页。
答案 0 :(得分:2)
您可以使用GridField在has_many
的帮助下管理many_many
或BulkEditingTools
,以便一次上传大量图片。
我通常会创建一个额外的DataObject,它与其他信息(翻译的字幕,版权信息等)保持Image关系,如:
<?php
class GalleryPic extends DataObject
{
private static $db = array(
'Title' => 'Text',
'Description' => 'Text',
'Copyright' => 'Text',
'SortOrder' => 'Int'
);
private static $has_one = array(
'Attachment' => 'Image',
'ResourcePage' => 'Page'
);
public function getCMSFields()
{
$fields = new FieldList(
TextField::create('Title', 'Title'),
TextareaField::create('Description', 'Desc.'),
TextField::create('Copyright', 'Copyright / Source'),
$imageField = UploadField::create('Attachment')
);
$imageField->setAllowedFileCategories('image');
$imageField->setAllowedMaxFileNumber(1);
return $fields;
}
}
然后我有一个DataExtension,它将has_many
插入任何页面类型或数据对象:
<?php
class PageGallery extends DataExtension
{
private static $has_many = array(
'Gallery' => 'GalleryPic'
);
function updateCMSFields(FieldList $fields)
{
$conf = GridFieldConfig_RecordEditor::create(10);
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
$conf->addComponent(new GridFieldGalleryTheme('Attachment'));
$conf->addComponent(new GridFieldBulkUpload());
//set upload folder if folderperroot extension is installed...
if ($this->owner->hasMethod('getRootFolderName')) {
$conf->getComponentByType('GridFieldBulkUpload')->setUfSetup('setFolderName', $this->owner->getRootFolderName());
}
$fields->addFieldToTab("Root.Bilder", Gridfield::create('Gallery', 'Gallery', $this->owner->Gallery(), $conf));
return $fields;
}
使用config yml api将其添加到您的页面(例如,添加到名为MyPage的类):
MyPage:
extensions:
- 'PageGallery'
您可以在CMS中的单独标签中上传图库上传网格。
我想你知道如何循环模板中的$Gallery
关系。
需要使用composer安装此模块才能使上述示例正常工作:
答案 1 :(得分:1)
我建议使用这个模块,因为它可以很好地处理多个上传...我会承认我没有试过120个项目,但我确信它是最好的选择。
https://github.com/unclecheese/silverstripe-dropzone
&#34; Dropzone模块提供FileAttachmentField,这是SilverStripe强大的HTML5上传界面,允许表单将文件上传保存到DataObject实例。&#34;