Exemplo n.º 1
0
 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;
 }