public function run() { //Выбираем меню админки - id = 1 $menu = Menu::find(1); //Добавляем родительскую ссылку $link = Links::create(['link_name' => 'Комментарии', 'link_url' => 'admin/comment', 'image_url' => 'fa fa-comments', 'status' => 1]); //Привязываем к меню $menu->links()->attach([$link->id => ['sort' => 5]]); }
/** * @param View $view */ public function compose(View $view) { //Получаем из БД все активные сссылки для админ меню, сортировка по возрастанию $links = Menu::find(1)->links()->orderBy('pivot_sort')->where('status', '=', 1)->get(); //Если ссылок нет if (!$links->count()) { $this->menu = "<--! NO LINKS -->"; $view->with('menu', $this->menu); } else { //Сортируем по родителю foreach ($links->toArray() as $item) { $this->linksArray[$item['parent_id']][] = $item; } $this->menu = "<ul class=\"sidebar-menu\">"; $this->menu .= "<li class=\"header\">ADMIN MENU</li>"; foreach ($this->linksArray[0] as $item) { //Есть ли у ссылки дети if (array_key_exists($item['id'], $this->linksArray)) { //Активность категории if (request()->is($item['link_url'] . "*")) { $this->menu .= "<li class=\"active treeview\">"; } else { $this->menu .= "<li class=\"treeview\">"; } $this->menu .= "<a href=\"#\">"; $this->menu .= "<i class=\"" . $item['image_url'] . "\"></i> <span>" . $item['link_name'] . "</span>"; $this->menu .= "<i class=\"fa fa-angle-left pull-right\"></i></a>"; $this->menu .= "<ul class=\"treeview-menu\">"; //Обработка подкатегорий ссылок $this->createMenu($item); $this->menu .= "</ul></li>"; } else { //Активность ссылки if (request()->path() == $item['link_url']) { $this->menu .= "<li class=\"active\">"; } else { $this->menu .= "<li>"; } $this->menu .= "<a href=\"/" . $item['link_url'] . "\"><i class=\"" . $item['image_url'] . "\"></i> <span>" . $item['link_name'] . "</span></a></li>"; } } $this->menu .= "</ul>"; $view->with('menu', $this->menu); } }
/** * Просмотр ссылок меню, а также их добавление и удаление. * @param $id * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function getView($id) { //Получаем из БД список ссылок для выбранного меню $links = Menu::find($id)->links()->orderBy('pivot_sort')->get(); //Получаем незадействованные в данном меню ссылки $newLinks = Links::whereNotIn('id', $links->lists('id'))->get(); //Если ссылок нет if (!$links->count()) { return view('admin::admin.menu.view', array('tree' => $this->tree, 'id' => $id, 'newLinks' => $newLinks)); } else { //Сортируем по родителю foreach ($links->toArray() as $item) { $this->linksArray[$item['parent_id']][] = $item; } //Сортируем массив foreach ($this->linksArray[self::$cnt] as $item) { $this->tree[self::$cnt]['id'] = $item['id']; $this->tree[self::$cnt]['span'] = "<span class=\"badge\">"; $this->tree[self::$cnt]['link_name'] = $item['link_name']; $this->tree[self::$cnt]['link_url'] = $item['link_url']; $this->tree[self::$cnt]['pivot_id'] = $item['pivot']['id']; $this->tree[self::$cnt]['pivot_sort'] = $item['pivot']['sort']; //Увеличиваем значение счетчика self::$cnt++; //Есть ли у ссылки дети if (array_key_exists($item['id'], $this->linksArray)) { $this->createTree($item); } } return view('admin::admin.menu.view', array('tree' => $this->tree, 'id' => $id, 'newLinks' => $newLinks)); } }