/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = CmsMenu::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } // grid filtering conditions $query->andFilterWhere(['menu_id' => $this->menu_id, 'page_id' => $this->page_id, 'parent_menu_id' => $this->parent_menu_id, 'area_id' => $this->area_id, 'created_by' => $this->created_by, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]); return $dataProvider; }
/** * Retrieve all child menu's given area and parent * @param integer $area_id, integer $parent_id * @return Array $cmenu */ public function getChildMenus($area_id, $parent_id) { if (empty($parent_id)) { return null; } else { $child_menus = CmsMenu::find()->where(['area_id' => $area_id, 'parent_menu_id' => $parent_id])->asArray()->all(); $cmenu = null; if (count($child_menus) > 0) { foreach ($child_menus as $child_menu) { $menu_model = $this->findModel($child_menu['menu_id']); if ($menu_model->page->status == 1) { $cmenu[] = array('menu_id' => $child_menu['menu_id'], 'menu_title' => $menu_model->page->menu_title, 'menu_status' => $menu_model->page->status, 'parent_menu_id' => $child_menu['parent_menu_id'], 'page_id' => $child_menu['page_id'], 'sort_order' => $child_menu['sort_order'], 'sub_children' => $this->getChildMenus($child_menu['area_id'], $child_menu['menu_id'])); } } } return $cmenu; } }