public function createCollection($configs, $parent = null) { foreach ($configs as $key => $config) { if (isset($config['parent'])) { $parent = $config['parent']; } $menuItem = new Menu\MenuItem(); $menuItem->setId($key)->setLabel($config['label'])->setAttr(isset($config['attr']) ? $config['attr'] : array())->setRoute(isset($config['route']) ? $config['route'] : null)->setSymlink(isset($config['symlink']) ? $config['symlink'] : null); $this->collection->add($menuItem, $parent); if (isset($config['children'])) { $this->createCollection($config['children'], $key); } } }
private function addChildren(MenuItem $menuItem, MenuItem $context = null) { $childrens = $context ? $context->getChildren() : $this->collection; if ($menuItem->getOrder()) { if (array_key_exists($menuItem->getOrder(), $childrens)) { array_splice($childrens, $menuItem->getOrder(), 0, array($menuItem)); return; } } $childrens[] = $menuItem; if ($context) { return $context->setChildren($childrens); } $this->collection = $childrens; }