public function actionCreate() { $model = new MenuItem(); if (isset($_POST['MenuItem'])) { $model->setAttributes($_POST['MenuItem']); if (isset($_POST['MenuItem']['menu'])) { $model->menu = $_POST['MenuItem']['menu']; } if (isset($_POST['MenuItem']['parent'])) { $model->parent = $_POST['MenuItem']['parent']; } $model->link = $_POST['MenuItem'][$_POST['MenuItem']['type']]; if (isset($_POST['MenuItem']['role'])) { $model->role = implode(',', $_POST['MenuItem']['role']); } else { $model->role = ''; } //pushing newly added item to last $maxRight = $model->getMaxRight(); $model->lft = $maxRight + 1; $model->rgt = $maxRight + 2; try { if ($model->save()) { $this->redirect(array('/' . $this->module->id . '/item/index', 'id' => $model->menu_id, 'activeId' => $model->id)); } } catch (Exception $e) { $model->addError('', $e->getMessage()); } } elseif (isset($_GET['MenuItem'])) { $model->attributes = $_GET['MenuItem']; } $this->render('create', array('model' => $model, 'menuId' => key($_GET))); }
/** * Обновление дерева пунктов меню в завимости от родителя. * * @return void */ public function actionDynamicParent() { if (Yii::app()->getRequest()->getIsAjaxRequest() && ($data = Yii::app()->getRequest()->getParam('MenuItem')) !== null) { $model = new MenuItem('search'); $model->setAttributes($data); if ($model->menu_id) { if (isset($_GET['id'])) { $model->id = $_GET['id']; } $data = $model->parentTree; foreach ($data as $value => $name) { echo CHtml::tag('option', array('value' => $value), $name, true); } } } Yii::app()->end(); }
protected function createMenu($menuArr, $items) { $menu = new Menu(); $menu->multilang(); $attr = array('name' => $menuArr['name']); foreach (Yii::app()->params['languages'] as $lang => $langName) { $attr['name_' . $lang] = $menuArr['name_' . $lang]; } $menu->setAttributes($attr); $menu->id = $menuArr['id']; $menu->save(); $orderNum = 1; foreach ($items as $item) { $menuItem = new MenuItem(); $menuItem->multilang(); $attr = array('menuId' => $menuArr['id'], 'name' => $item['name'], 'link' => $item['link'], 'orderNum' => $orderNum++, 'active' => 1, 'visible' => 1); foreach (Yii::app()->params['languages'] as $lang => $langName) { $attr['name_' . $lang] = $item['name_' . $lang]; } $menuItem->setAttributes($attr); $menuItem->save(); } }
/** * Добавляет новый пункт меню в меню * @param $title string - Заголовок * @param $href string - Ссылка * @param $parentId int - Родитель * @param bool $regularLink - Обычная ссылка * @return bool */ public function addItem($title, $href, $parentId, $regularLink = false) { $menuItem = new MenuItem(); $menuItem->setAttributes(['parent_id' => (int) $parentId, 'menu_id' => $this->id, 'title' => $title, 'href' => $href, 'regular_link' => $regularLink]); if (true === $menuItem->save()) { Yii::app()->getCache()->clear(['menu', $this->code]); return true; } return false; }
/** * @throws CHttpException */ public function actionDynamicParent() { if (!Yii::app()->getRequest()->getIsAjaxRequest()) { throw new CHttpException(404); } $model = new MenuItem('search'); $model->setAttributes(Yii::app()->getRequest()->getParam('MenuItem')); if ($model->menu_id) { $model->id = Yii::app()->getRequest()->getQuery('id'); $data = $model->getParentTree(); foreach ($data as $value => $name) { echo CHtml::tag('option', ['value' => $value], $name, true); } } Yii::app()->end(); }