/** * 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; }
/** * Suggest menus (via json). * * @return void * * @Get("/suggest", name="admin-menus-suggest") */ public function suggestAction() { $this->view->disable(); $query = $this->request->get('query'); if (!$query) { $this->response->setContent('[]')->send(); return; } $results = Menu::find(["conditions" => "name LIKE ?1", "bind" => [1 => '%' . $query . '%']]); $data = []; foreach ($results as $result) { $data[] = ['id' => $result->id, 'label' => $result->name]; } $this->response->setContent(json_encode($data))->send(); }
/** * 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); } }