示例#1
0
 /**
  * Sets the layout for the page.
  * Adds as much ContentSet to the page main ContentSet than defined zones in layout.
  *
  * @param  Layout               $layout
  * @param  AbstractClassContent $toPushInMainZone
  *
  * @return Page
  */
 public function setLayout(Layout $layout, AbstractClassContent $toPushInMainZone = null)
 {
     $this->_layout = $layout;
     $count = count($layout->getZones());
     // Add as much ContentSet to the page main ContentSet than defined zones in layout
     for ($i = $this->getContentSet()->count(); $i < $count; $i++) {
         // Do this case really exists ?
         if (null === ($zone = $layout->getZone($i))) {
             $this->getContentSet()->push(new ContentSet());
             continue;
         }
         // Create a new column
         $contentset = new ContentSet(null, $zone->options);
         if (null !== $toPushInMainZone && true === $zone->mainZone) {
             // Existing content push in the main zone
             $contentset->push($toPushInMainZone->setMainNode($this));
         } elseif ('inherited' === $zone->defaultClassContent) {
             // Inherited zone => same ContentSet than parent if exist
             $contentset = $this->getInheritedContent($i, $contentset);
         } elseif ($zone->defaultClassContent) {
             // New default content push
             $contentset->push($this->createNewDefaultContent('BackBee\\CoreDomain\\ClassContent\\' . $zone->defaultClassContent, $zone->mainZone));
         }
         $this->getContentSet()->push($contentset);
     }
     return $this;
 }