2016-04-06 14 views
1

modelini yönetemedi ve admin panelinden bağlantıları ve her şeyi güncelleştirmek için bir kategori/menü dinamik yapmaya çalışıyorum. Ağacıyı gedmo'dan denedim, ancak belgelere bakıp saatler geçirdikten sonra bile çocukları alamadım. Ayrıca knp menü paketi kullanmak istiyorum. Birisi bana uygulamamda bana yardımcı olabilir ve bana lft, rgt, kök, ağaçtan gelen seviyeyi ve neden kullanmalıyım? bunu böyle çözüldüGedmo Tree,

public function createAdminMenu(array $options) 
{ 
    $menu_item = $this->em->getRepository('AppBundle:MenuItem'); 
    $menu = $this->factoryInterface->createItem('root'); 

    $rootNodes = $menu_item->getRootNodes(); 

    //var_dump($rootNodes); 
    $node = $menu_item->findOneByName('User'); 
    var_dump($menu_item->getChildren()); 
    foreach($rootNodes as $node) { 
     if($node->getDisplay()) 
     { 
      $menu->addChild($node->getName(), array('uri' => $node->getUri())); 

      $child_node = $node->getChildren($node); 
      //var_dump($child_node); 
      foreach($child_node as $child) 
      { 
       //$menu[$node->getName()] = $menu->addChild($child->getName()); 
      } 
     } 
    } 


    return $menu; 
} 

cevap

1

:

$repo = $this->em->getRepository('AppBundle:MenuItem'); 

    $nodes = $repo->findByRootNodes($menuId); 

    foreach ($nodes as $node) { 
     if ($node->getDisplay()) { 
      $menu->addChild($node->getName(), ['uri' => $node->getRoute()]) 
       ->setAttribute('dropdown', $node->getDropDown()); 
      if ($node->getDisplayChildren()) { 
       $children = $repo->children($node); 
       if($children) 
       { 
        foreach ($children as $child) 
        { 
         if ($child->getDisplay()) 
         { 
          $menu[$node->getName()]->addChild($child->getName(), ['uri' => $child->getRoute()]) 
           ->setAttribute('divider_prepend', $child->getDividerPrepend()) 
           ->setAttribute('divider_append', $child->getDividerAppend()); 
         } 
        } 
       } 
      } 
     } 
    } 
    return $menu; 
İşte

benim yöntemidir
İlgili konular