示例#1
0
 private function createMap()
 {
     $items = MenuItem::find()->published()->orderBy('link_weight ASC')->asArray()->all();
     foreach ($items as $item) {
         if ($item['link_type'] == MenuItem::LINK_ROUTE) {
             $this->_paths[$item['id']] = $item['path'];
             $this->_routes[$item['id']] = $item['link'];
         } else {
             $this->_links[$item['id']] = $item['link'];
         }
     }
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = MenuItem::find();
     $query->with(['menuType']);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['lft' => SORT_ASC]]]);
     if (!($this->load($params) && $this->validate())) {
         if ($this->excludeRoots) {
             $query->excludeRoots();
         }
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'menu_type_id' => $this->menu_type_id, 'parent_id' => $this->parent_id, 'status' => $this->status, 'link_type' => $this->link_type, 'secure' => $this->secure, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'created_by' => $this->created_by, 'updated_by' => $this->updated_by, 'lft' => $this->lft, 'rgt' => $this->rgt, 'level' => $this->level, 'ordering' => $this->ordering, 'hits' => $this->hits, 'lock' => $this->lock]);
     $query->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'alias', $this->alias])->andFilterWhere(['like', 'path', $this->path])->andFilterWhere(['like', 'note', $this->note])->andFilterWhere(['like', 'link', $this->link])->andFilterWhere(['like', 'link_params', $this->link_params])->andFilterWhere(['like', 'layout_path', $this->layout_path])->andFilterWhere(['like', 'access_rule', $this->access_rule])->andFilterWhere(['like', 'metakey', $this->metakey])->andFilterWhere(['like', 'metadesc', $this->metadesc])->andFilterWhere(['like', 'robots', $this->robots]);
     if ($this->excludeRoots) {
         $query->excludeRoots();
     }
     if ($this->excludeItem && ($item = MenuItem::findOne($this->excludeItem))) {
         /** @var $item MenuItem */
         $query->excludeItem($item);
     }
     return $dataProvider;
 }
 /**
  * @return Response
  */
 public function actionOrdering()
 {
     $data = Yii::$app->request->getBodyParam('data', []);
     foreach ($data as $id => $order) {
         if ($target = MenuItem::findOne($id)) {
             $target->updateAttributes(['ordering' => intval($order)]);
         }
     }
     MenuItem::find()->roots()->one()->reorderNode('ordering');
     DbState::updateState(MenuItem::tableName());
     return $this->redirect(ArrayHelper::getValue(Yii::$app->request, 'referrer', ['index']));
 }
示例#4
0
 /**
  * @return array
  */
 protected function items()
 {
     $rawItems = MenuItem::find()->type($this->type)->published()->orderBy('lft')->all();
     if (count($rawItems)) {
         return $this->prepareItems($rawItems, $rawItems[0]->level);
     }
     return [];
 }