2016-07-07 3 views
1

同時に120枚の画像をアップロードすることができるUploadFieldの拡張機能があるかどうか知りたいですか?それはI/Oサーバーの問題が過度の使用に応答しない原因となります。だから、どのようにキューイメージを1つにするのですか?私はイメージを一つ一つアップロードしたくない。モジュールはどこかの部分かコードの部分ですか?Silverstripe UploadField複数の画像を同時にアップロードすることはできません。

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); 

結果...空白のページ:私のprojextに追加GridFieldBulkEditingToolsと

+1

内線番号https://github.com/colymba/GridFieldBulkEditingTools。ギャラリーのhttps://github.com/colymba/GridFieldGalleryThemeも大好きです。 – wmk

+0

そのGridFieldにhas_manyまたはmany_many(画像)を追加できますか?私はリフレッシュ後にいつもcmsに空白のページを持っています。 – StefGuev

答えて

2

GridFieldを使用して、has_manyまたはmany_manyを管理し、多数の画像を一度にアップロードするためのBulkEditingToolsの助けを借りて利用できます。私は、通常、他の情報と画像の関係を保持余分のDataObject作る

(翻訳字幕などの著作権情報を...)のような:

<?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; 
    } 
} 

それから私は、任意のページへhas_manyプラグDataExtensionを持っています型やデータオブジェクト:

<?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; 
    } 

(例えばマイページと呼ばれるクラスに)設定YML APIを使用して、あなたのページにこれを追加します。

MyPage: 
    extensions: 
    - 'PageGallery' 

そして、あなたはギャラリーのグリッドフィールドをCMSの別々のタブに入れます。

テンプレートの$Galleryリレーションをループする方法を知っていると思います。

このモジュールは、上記の例の作業を取得するために作曲を使用してインストールする必要があります:あなたはbulkuploaderでGridfieldを使用することができます

+0

いい仕事です!手伝ってくれてありがとう! – StefGuev

+1

私はchunkeduploadfield https://github.com/micschk/silverstripe-chunkeduploadfieldを実行する別のモジュールを見つけました。 Justeはこの行のドキュメントを変更します$ sizeMB = .05 * 1024 * 1024; //非常にうまく動作し、サーバをクラッシュさせることのないバイト単位の50 KB。 – StefGuev

1

私はこのモジュールを使用することをお勧めします。なぜならそれはたくさんのアップロードを非常にうまく処理するからです...私は120個のアイテムを試したことは認めませんが、その最高のオプションは確信しています。

https://github.com/unclecheese/silverstripe-dropzone

「ドロップゾーンモジュールは、フォームがDataObjectのインスタンスへのファイルのアップロードを保存することができ、FileAttachmentField、SilverStripeための堅牢なHTML5アップロードインターフェースを提供します。」

+0

100枚以上の画像をドラッグすると、すべての画像が1枚ずつアップロードされますか? – StefGuev

+0

そして、私は特定のフォルダにファイルをドロップするために 'setFolderName'のようなオプションは表示されません。 – StefGuev

+0

申し訳ありませんが、これ以上の詳細はありません。ファイルのアップロードをロードするソリューションとして推奨していますが、最終的にはあなたの選択です。この回答が役に立たない場合は申し訳ありません。そうであれば、他の回答を待ってください。 – Barry

関連する問題