Jump to:

7939 Posts in 1543 Topics by 946 members

DataObjectManager Module

SilverStripe Forums » DataObjectManager Module » Need help to use more than one DataObjectManager within a single FieldSet return?in

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: 690 Views
  • DaveTh
    Avatar
    Community Member
    14 Posts

    Need help to use more than one DataObjectManager within a single FieldSet return?in Link to this post

    I am learning how to use the DataObjectManager module.

    The followings are the 3 DataObjects (Data2,Data3,Data4) nested to one parent DataObject (Data1).
    From the parent Data1 popup, I can only have access to one nested Dataobject e.g. Data2. I need suggestion to what I need to do to allow access to all the nested children dataobjects (Data2,Data3, and Data4). Thank you

    //Nested DataObjects
    class Data2 extends DataObject {
    static $db = array(
    'Title'=>'Text',
    'Description'=>'Text'
    );
    }
    //Nested DataObjects
    class Data3 extends DataObject {
    static $db = array(
    'Title'=>'Text',
    'Description'=>'Text'
    );
    }
    //Nested DataObjects
    class Data4 extends DataObject {
    static $db = array(
    'Title'=>'Text',
    'Description'=>'Text'
    );
    }

    class Data1 extends DataObject {

    static $db = array(
    'Name' => 'Text',
    );

    static $has_many = array(
    'Data2List' => 'Data2 ',
    'Data3List' => 'Data3 ',
    'Data4List' => 'Data4 '
    );

    static $has_one = array(
    'Data1List' => 'Data1Holder'
    );

    function getCMSFields() {

    $fieldListSymptomList = array();

    return new FieldSet(
    new TextField('Name', 'Data1 Name'),
    new DataObjectManager($this, $Data2List, $Data2),
    new DataObjectManager($this, $Data3List, $Data3),
    new DataObjectManager($this, $Data4List, $Data4)
    );
    }

    }

    class Data1Holder extends Page {

    //put your code here
    static $db = array(
    );
    static $has_many = array(
    'Data1List' => 'Data1'
    );
    static $allowed_children = array('Data1');

    public function getCMSFields() {

    $f = parent::getCMSFields();
    $manager = new DataObjectManager(
    $this, // Controller
    'Data1List', // Source name
    'Data1', // Source class
    array('Name' => 'Data1 Name'), // Headings
    'getCMSFields_forPopup' // Detail fields function or FieldSet
    // Filter clause
    // Sort clause
    // Join clause
    );

    $f->addFieldToTab("Root.Content.Data1", $manager);

    return $f;
    }
    }

    This work, but when I uncommend all 3 DataObjectManager, I get an error during popup for Data1.

    //class Data1
    return new FieldSet(
    new TextField('Name', 'Data1 Name'),
    //new DataObjectManager($this, $Data2List, $Data2),
    //new DataObjectManager($this, $Data3List, $Data3),
    new DataObjectManager($this, $Data4List, $Data4)
    );

    690 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.