/** * Add elements * * @param \SKCMS\CoreBundle\Entity\MenuElement $elements * @return Menu */ public function addElement(\SKCMS\CoreBundle\Entity\MenuElement $elements) { $this->elements[] = $elements; $elements->setMenu($this); die('elements added'); return $this; }
private function getMenuTargetEntities(\SKCMS\CoreBundle\Entity\MenuElement $menu, \Symfony\Component\Routing\Router $router, $multilingue = true) { if ($menu->getEntityId() != null) { $repo = $this->em->getRepository($menu->getEntityClass()); // $repo->setDefaultLocale($this->locale); $targetEntity = $repo->find($menu->getEntityId(), $this->locale); $targetEntity->setTranslatableLocale($this->locale); $this->em->refresh($targetEntity); if (null !== $targetEntity) { // //dump($router->generate('skcms_front_page_multilingue', ['id'=>$targetEntity->getId(),'slug'=>$targetEntity->getSlug(),'_locale'=>$this->locale])); // //dump($targetEntity->getSlug()); $menu->setTargetEntity($targetEntity); if ($targetEntity instanceof SKBasePage) { if ($multilingue) { $path = $targetEntity->getSlug() == 'home' ? $router->generate('skcms_front_home_multilingue', ['_locale' => $this->locale]) : $router->generate('skcms_front_page_multilingue', ['slug' => $targetEntity->getSlug(), '_locale' => $this->locale]); $menu->setLink($path); } else { $path = $targetEntity->getSlug() == 'home' ? $router->generate('skcms_front_home') : $router->generate('skcms_front_page', ['slug' => $targetEntity->getSlug()]); $menu->setLink($path); } } else { if ($multilingue) { $menu->setLink($router->generate('skcms_front_entity_multilingue', ['slug' => $targetEntity->getSlug(), '_locale' => $this->locale, '_format' => 'html'])); } else { $menu->setLink($router->generate('skcms_front_entity', ['slug' => $targetEntity->getSlug(), '_format' => 'html'])); } } } } foreach ($menu->getChildren() as $child) { $child = $this->getMenuTargetEntities($child, $router, $multilingue); } return $menu; }
private function menuEntitiesToArray(MenuElement $menu) { $toReturn = []; foreach ($menu->getChildren() as $children) { $toReturn[$children->getPosition()]['name'] = $children->getName(); $toReturn[$children->getPosition()]['targetId'] = $children->getEntityId(); $toReturn[$children->getPosition()]['elementId'] = $children->getId(); $toReturn[$children->getPosition()]['entityClass'] = $children->getEntityClass(); $toReturn[$children->getPosition()]['position'] = $children->getPosition(); if (count($children->getChildren())) { $toReturn[$children->getPosition()]['children'] = $this->menuEntitiesToArray($children); } } return $toReturn; }
/** * Add children * * @param \SKCMS\CoreBundle\Entity\MenuElement $children * @return MenuElement */ public function addChild(\SKCMS\CoreBundle\Entity\MenuElement $children) { $this->children[] = $children; $children->setParent($this); return $this; }