public function getItemsFlat($root = -1, $level = 0) { $result = []; $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $this->id])->orderBy('order')->all(); foreach ($items as $item) { $result[$item->id] = str_repeat('-', $level) . ' ' . $item->title; $result += $this->getItemsFlat($item->id, $level + 1); } return $result; }
private function generateTree($root = -1) { $result = []; $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $this->menu->id, 'source_id' => -1])->orderBy('order')->all(); foreach ($items as $item) { $item = $item->getTranslation(Language::getCurrentLangID(), false); $id = $item->id; if ($item->source_id != -1) { $id = $item->source_id; } $result[] = ['label' => $item->title, 'url' => $item->link == '' ? '#' : $item->link, 'items' => $this->generateTree($id)]; } return $result; }
/** * Generates tree for menu with links * @param integer $menu_id * @return array */ private function generateItemsTree($menu_id, $root = -1) { $result = []; $items = MenuItem::find()->where(['root_id' => $root, 'menu_id' => $menu_id, 'source_id' => -1])->orderBy('order')->all(); foreach ($items as $item) { $result[] = ['label' => $item->title . ' ' . Html::a('<i class="fa fa-pencil"></i>', ['update-item', 'id' => $item->id]) . ' ' . Html::a('<i class="fa fa-trash"></i>', ['delete-item', 'id' => $item->id]), 'url' => ['update-item', 'id' => $item->id], 'items' => $this->generateItemsTree($menu_id, $item->id)]; } return $result; }