소스 검색

Merge pull request #2815 from EmmanuelVella/menu

Do not display menu item if no child is displayed
Thomas 10 년 전
부모
커밋
83f90f5846
2개의 변경된 파일8개의 추가작업 그리고 22개의 파일을 삭제
  1. 4 22
      Tests/Twig/Extension/SonataAdminExtensionTest.php
  2. 4 0
      Twig/Extension/SonataAdminExtension.php

+ 4 - 22
Tests/Twig/Extension/SonataAdminExtensionTest.php

@@ -998,17 +998,8 @@ class SonataAdminExtensionTest extends \PHPUnit_Framework_TestCase
         $menu = $this->twigExtension->getKnpMenu($request);
 
         $this->assertInstanceOf('Knp\Menu\ItemInterface', $menu);
-        $this->assertArrayHasKey('bar', $menu->getChildren());
-
-        foreach ($menu->getChildren() as $key => $child) {
-            $this->assertInstanceOf('Knp\Menu\MenuItem', $child);
-            $this->assertEquals('bar', $child->getName());
-            $this->assertEquals($adminGroups['bar']['label'], $child->getLabel());
-
-            // menu items
-            $children = $child->getChildren();
-            $this->assertCount(0, $children);
-        }
+        $this->assertArrayNotHasKey('bar', $menu->getChildren());
+        $this->assertCount(0, $menu->getChildren());
     }
 
     public function testGetKnpMenuWithNotGrantedList()
@@ -1045,16 +1036,7 @@ class SonataAdminExtensionTest extends \PHPUnit_Framework_TestCase
         $menu = $this->twigExtension->getKnpMenu($request);
 
         $this->assertInstanceOf('Knp\Menu\ItemInterface', $menu);
-        $this->assertArrayHasKey('bar', $menu->getChildren());
-
-        foreach ($menu->getChildren() as $key => $child) {
-            $this->assertInstanceOf('Knp\Menu\MenuItem', $child);
-            $this->assertEquals('bar', $child->getName());
-            $this->assertEquals($adminGroups['bar']['label'], $child->getLabel());
-
-            // menu items
-            $children = $child->getChildren();
-            $this->assertCount(0, $children);
-        }
+        $this->assertArrayNotHasKey('bar', $menu->getChildren());
+        $this->assertCount(0, $menu->getChildren());
     }
 }

+ 4 - 0
Twig/Extension/SonataAdminExtension.php

@@ -415,6 +415,10 @@ class SonataAdminExtension extends \Twig_Extension
                     ->setExtra('admin', $admin)
                 ;
             }
+
+            if (0 === count($menu[$name]->getChildren())) {
+                $menu->removeChild($name);
+            }
         }
 
         return $menu;