public function iterate($menu, PageInterface $page)
 {
     foreach ($page->getChildren() as $page) {
         if ($page->isHybrid() || !$page->getUrl()) {
             continue;
         }
         $menu->addChild($page->getName(), array('route' => $page->getRouteName(), 'routeParameters' => array('path' => $page->getUrl())));
         if ($page->getChildren()) {
             $this->iterate($menu[$page->getName()], $page);
         }
     }
 }
 /**
  * Generates an URL from a Page object.
  *
  * @param PageInterface $page          Page object
  * @param array         $parameters    An array of parameters
  * @param bool|string   $referenceType The type of reference to be generated (one of the constants)
  *
  * @return string
  *
  * @throws \RuntimeException
  */
 protected function generateFromPage(PageInterface $page, array $parameters = array(), $referenceType = self::ABSOLUTE_PATH)
 {
     // hybrid pages use, by definition, the default routing mechanism
     if ($page->isHybrid()) {
         return $this->router->generate($page->getRouteName(), $parameters, $referenceType);
     }
     $url = $this->getUrlFromPage($page);
     if ($url === false) {
         throw new \RuntimeException(sprintf('Page "%d" has no url or customUrl.', $page->getId()));
     }
     return $this->decorateUrl($url, $parameters, $referenceType);
 }
示例#3
0
 public function save(PageInterface $page)
 {
     if (!$page->isHybrid() || $page->getRouteName() == 'homepage') {
         $this->fixUrl($page);
     }
     $this->entityManager->persist($page);
     $this->entityManager->flush();
     return $page;
 }