Jump to:

7940 Posts in 1543 Topics by 946 members

DataObjectManager Module

SilverStripe Forums » DataObjectManager Module » When using more images in one dataobject -> [Notice] Undefined index: uploaded_files

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 1179 Views
  • duskydesigns
    Avatar
    Community Member
    15 Posts

    When using more images in one dataobject -> [Notice] Undefined index: uploaded_files Link to this post

    Hey all,

    I need a dataobject wich has two images, one large banner and a stamp banner. However this seems not possible with the current dataobjectmanager. I doesnt take two images. I gives a undefined index for the second image and also resets all fields set for the dataobject. I might be doing something wrong. The line it is about is:

    $total = isset($_POST['totalsize']) ? $_POST['totalsize'] : sizeof($_POST['uploaded_files']);

    Advertisement.php
    <?php class Advertisement extends DataObject {
       
       static $db = array (
          'Name' => 'Text',
          'Site' => 'Text'
       );

       static $has_one = array (
          'Banner' => 'Image',
          'Stamp' => 'Image',
          'AdvertisementPage' => 'AdvertisementPage'
       );

       static $icon = "mysite/icons/advertisement";

       public function getCMSFields_forPopup()
       {
          return new FieldSet(
             new TextField('Name', 'Naam van de sponsor'),
             new TextField('Site', 'URL naar de sponsor'),
             new ImageField('Banner', 'Banner groot, 680x200'),
             new ImageField('Stamp', 'Stamp klein, 207x200')
          );
       }
    }
    AdvertisementPage:
    <?php
    class AdvertisementPage extends Page {

       public static $db = array(
       );
       
       static $has_many = array (
          'Advertisements' => 'Advertisement'
       );

       public static $has_one = array(
          
          
       );
       
       static $icon = "mysite/icons/advertisementholder";
       
       function getCMSFields() {
        $fields = parent::getCMSFields();
       
        $manager = new FileDataObjectManager(
             $this, // Controller
             'Advertisements', // Source name
             'Advertisement', // Source class
             'Banner', // File name on DataObject
             array(
             ), // Headings
             'getCMSFields_forPopup' // Detail fields (function name or FieldSet object)
             // Filter clause
             // Sort clause
             // Join clause
             );
             
             //$fields->addFieldToTab("Root.Content.BannerRotator", new HTMLEditorField('BannerRotator','Banner Rotator Content'));
             $fields->removeFieldFromTab('Root.Content','Content');
             $fields->addFieldToTab("Root.Content.Main",$manager);
             
             // If undefined, all types are allowed. Pass with or without a leading "."      
             $manager->setAllowedFileTypes(array('jpg','png', 'gif'));

             // Label for the upload button in the popup
             $manager->setBrowseButtonText("Upload (680x200)");

             // In grid view, what field will appear underneath the icon. If left out, it defaults to the file title.
             $manager->setGridLabelField('Name');

             // Plural form of the objects being managed. Used on the "Add" button.
             $manager->setDefaultView('list');

             //Remove the folder selection from uploadify
             $manager->allowUploadFolderSelection = false;

             //Set the upload folder
             $manager->setUploadFolder('Uploads/advertisements');
             
        return $fields;
        }
    }
    class AdvertisementPage_Controller extends Page_Controller {

    }

    You can't define more than one filename on the dataobject so thats kind of hard to fix. Only other thing i can think of to fix it is to make subpages that take two images. But that is kind of overload on pages. I think this can work through the dataobjectmanager, if i can figure out what i am doing wrong.

    Does it need another relationship? Im not quite sure if this is a bug or bad writing of the dataobjectmanager but i wouldve been fine with the way dataobjectmanager behaved, except for that i got undefined index and the settings of the main upload dont stick for the secondary.

  • Deej
    Avatar
    Community Member
    3 Posts

    Re: When using more images in one dataobject -> [Notice] Undefined index: uploaded_files Link to this post

    Hi duskydesigns,

    Did you ever get anywhere on this, I want to do something similar.

    I want to have the main image and then be able to also be able to upload a thumbnail image all using image data object manager. At this stage I get the following error where the image upload form field for the thumbnail should be:

    (note: The below is an error I get when in dev mode in test mode I don't get the error but run into more problems when I try to attach the image.)

    [Notice] Undefined index: uploaded_files
    GET /admin/EditForm/field/ProductImages/EditUploadedForm/field/ColourImage/iframe?SecurityID=c71f8aba608611d03d4d6a09d225f5675decea60&ctf[ProductImages][start]=0&ctf[ProductImages][per_page]=10&ctf[ProductImages][showall]=0&ctf[ProductImages][sort]=SortOrder&ctf[ProductImages][sort_dir]=&ctf[ProductImages][search]=&ctf[ProductImages][filter]=&ctf[ProductImages][view]=grid&ctf[ProductImages][imagesize]=100

    Line 524 in C:\wamp\www\current\traditionalovens\implementation\public_html\dataobject_manager\code\FileDataObjectManager.php
    Source

    515    public function EditUploadedForm()
    516    {
    517       if(!$this->hasDataObject)
    518          return $this->closePopup();
    519
    520       $childData = $this->getChildDataObj();
    521       $validator = $this->getValidatorFor($childData);
    522       $fields = $this->getFieldsFor($childData);
    523       $fields->removeByName($this->fileFieldName);
    524       $total = isset($_POST['totalsize']) ? $_POST['totalsize'] : sizeof($_POST['uploaded_files']);
    525       $index = isset($_POST['index']) ? $_POST['index'] + 1 : 1;
    526       $fields->push(new HiddenField('totalsize','',$total));
    527       $fields->push(new HiddenField('index','',$index));
    528       if(isset($_POST['uploaded_files']) && is_array($_POST['uploaded_files'])) {
    529          $remaining_files = $_POST['uploaded_files'];
    530          $current = $remaining_files[0];

    Trace

    FileDataObjectManager->EditUploadedForm(SS_HTTPRequest)
    Line 143 of RequestHandler.php
    RequestHandler->handleRequest(SS_HTTPRequest)
    Line 161 of RequestHandler.php
    RequestHandler->handleRequest(SS_HTTPRequest)
    Line 161 of RequestHandler.php
    RequestHandler->handleRequest(SS_HTTPRequest)
    Line 147 of Controller.php
    Controller->handleRequest(SS_HTTPRequest)
    Line 282 of Director.php
    Director::handleRequest(SS_HTTPRequest,Session)
    Line 125 of Director.php
    Director::direct(/admin/EditForm/field/ProductImages/EditUploadedForm/field/ColourImage/iframe)
    Line 127 of main.php

    Any help appreciated. Thanks.

    1179 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.