/** * Main action. * * @return mixed */ public function indexAction() { $this->view->title = $this->getParam('title'); $menuId = $this->getParam('menu_id'); $menu = null; if ($menuId) { $menu = Menu::findFirst($menuId); } if (!$menu) { return $this->setNoRender(); } $menuClass = $this->getParam('class', 'nav'); if (empty($menuClass)) { $menuClass = 'nav'; } $items = $this->_composeNavigationItems($menu->getMenuItems(['parent_id IS NULL', 'order' => 'item_order ASC'])); if (empty($items)) { return $this->setNoRender(); } $navigation = new Navigation(); $navigation->setListClass($menuClass)->setItems($items)->setActiveItem($this->dispatcher->getActionName()); $this->view->navigation = $navigation; }
/** * Manage menu items. * * @param int $id Menu identity. * * @return void|ResponseInterface * * @Get("/manage/{id:[0-9]+}", name="admin-menus-manage") */ public function manageAction($id) { $item = Menu::findFirst($id); if (!$item) { return $this->response->redirect(['for' => "admin-menus"]); } $parentId = $this->request->get('parent_id', 'int'); if ($parentId) { $parent = MenuItem::findFirst($parentId); // Get all parents. $flag = true; $parents = []; $parents[] = $currentParent = $parent; while ($flag) { if ($currentParent->parent_id) { $parents[] = $currentParent = $currentParent->getParent(); } else { $flag = false; } } $parents = array_reverse($parents); $this->view->parent = $parent; $this->view->parents = $parents; $this->view->items = $parent->getMenuItems(['order' => 'item_order ASC']); } else { $this->view->items = $item->getMenuItems(['parent_id IS NULL', 'order' => 'item_order ASC']); } $this->view->menu = $item; }
/** * Returns parent object, it can be MenuItem or Menu (if there is no parent_id). * * @return MenuItem|Menu */ public function getParent() { if ($this->parent_id) { return self::findFirst($this->parent_id); } else { return Menu::findFirst($this->menu_id); } }