Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

DataObjectManager Module /

Discuss the DataObjectManager module, and the related ImageGallery module.

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

DOM for Pages - how to set ParentID upon write?


Reply


2 Posts   654 Views

Avatar
KINKCreative

Community Member, 56 Posts

10 June 2011 at 10:06am

Edited: 10/06/2011 10:10am

I am setting up a DOM for Articles under a Category page. When added via the DOM, I want the Articles to become children of the Category, and I will have them hidden from SiteTree. As they are added via the DOM, to set the ParentID to the ID of the Category and I need help with this.

I tried this... but it's not working.

class Article extends Page {

static $db = array(
   'Subtitle' => 'Varchar(60)',
   'Summary' => 'Text',
   'Author'=>'Text'
);
   static $has_one = array(
      'Category' => 'Category'
   );
   
   static $allowed_children = array('None');
   
   
   static $defaults = array(
      'ShowInMenus' => false,
      'ShowInSearch' => false
   );
   
   function onBeforeWrite() {
      if(!$this->ID) {
         $this->ParentID = $this->Category()->ID;
      }
      parent::onBeforeWrite();
   }
}

Should I use setParent()?

I'm also wondering - the CategoryID (from $has_one) and ParentID will eventually be the same (once we figure it out), not sure if both are needed or if there's a way for DOM to seek ParentID and not need the $has_one reference.

Avatar
UncleCheese

Forum Moderator, 4096 Posts

11 June 2011 at 3:29am

DOM is for managing DataObject subclasses -- not SiteTree. If you're looking for an alternative to the tree for managing your pages, you might check out my tutorial "Remodel Admin" on my blog.

http://www.leftandmain.com/uncategorized/2011/02/25/taming-the-beast-remodeling-modeladmin/

--------------------
SilverStripe tips, tutorials, screencasts and more: http://www.leftandmain.com