/** * testMenuChild * * @return void */ public function testMenuChild() { $menuItem = new MenuItem(['id' => 'freeboard', 'parentId' => 'main', 'ordering' => 1, 'activated' => 1, 'type' => 'pluginA@board', 'title' => '자유게시판', 'description' => '자유게시판 게시판입니다.', 'url' => 'freeboard']); $childItem = new MenuItem(['id' => 'qna', 'parentId' => 'freeboard', 'ordering' => 1, 'activated' => 1, 'type' => 'pluginA@board', 'title' => 'Q & A', 'description' => '질답 게시판입니다.', 'url' => 'qna']); $menuItem->addChild($childItem); $this->assertEquals(true, $menuItem->hasChild()); $this->assertEquals(1, $menuItem->countSubItems()); $children = $menuItem->getChildren(); /** * @var MenuItem $foundItem */ $foundItem = $children['qna']; $this->assertEquals('qna', $foundItem->id); $this->assertEquals('freeboard', $foundItem->parentId); $this->assertEquals(1, $foundItem->ordering); $this->assertEquals(true, $foundItem->activated); $this->assertEquals('pluginA@board', $foundItem->type); $this->assertEquals('Q & A', $foundItem->title); $this->assertEquals('질답 게시판입니다.', $foundItem->description); $this->assertEquals('qna', $foundItem->url); }
/** * Delete Menu Item at Menu * * @param MenuItem $item 삭제하려는 MenuItem * * @return int * @throws CanNotDeleteMenuItemHaveChildException */ public function removeItem(MenuItem $item) { if ($item->hasChild()) { throw new CanNotDeleteMenuItemHaveChildException(); } $menuType = $item->type; $menuTypeObj = $this->typeHandler->getModuleObject($menuType); $affectedRow = $this->menuRepository->deleteItem($item); $this->menuRepository->removeHierarchy($item); $menuTypeObj->deleteMenu($item->id); if ($menuTypeObj::isRouteAble()) { $instanceRoute = $this->routeHandler->getByInstanceId($item->id); $this->routeHandler->remove($instanceRoute); } $this->cache->deleteCachedMenu($item->menuId); return $affectedRow; }