request->isAjax) { $data = []; $params =['key_id'=>0]; $query = mergeParams($query,$params); $countQuery = clone $query; //分页 if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));} if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));} //排序 if(isset($_GET['sort'])&&isset($_GET['sortOrder'])) { $resultList = $query->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->all(); } else { $resultList = $query->orderBy(['menu_id'=>SORT_ASC])->all(); } foreach($resultList as $result) { $data[] = array('menu_id'=>$result->menu_id,'name'=>$result->name); } $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data]; echo_json($result); } $this->tableTitle = array( array('field'=>'menu_id','title'=>Linkmenu::getAttributeName('menu_id'),'align'=>'center','class'=>'col-md-2'), array('field'=>'name','title'=>Linkmenu::getAttributeName('name'),'align'=>'center','class'=>'col-md-8'), array('field'=>'operate','title'=>Linkmenu::getAttributeName('operate'),'align'=>'center','events'=>'window.operateEvents','formatter'=>'operateFormatter','class'=>'col-md-2'), ); $this->tableConfig = array('table'=>Linkmenu::shortTableName(),'url'=>$this->createRealUrl(['admin/linkmenu/list']),'setFieldUrl'=>$this->createRealUrl(['admin/linkmenu/setfield']),'idField'=>Linkmenu::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>false,'pagesize'=>20,'refresh'=>true); return $this->render('list',array('model'=>new Linkmenu())); } //添加 function actionAdd() { $model = new Linkmenu(); if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){ $exist = Linkmenu::find()->where("name='".$model->name."'")->exists(); if($exist) { $msgdata = ['error' => 1,'msg' => '已存在该菜单']; echo_json($msgdata); } $model->flagtext = str_replace(",",",",$model->flagtext); if(!$model->validate()) { $msgdata = ['error' => 1,'msg' => $model->returnFirstError()]; } else { if($model->save()) { $msgdata = ['error' => 0,'msg' => '操作成功']; } else { $msgdata = ['error' => 1,'msg' => '操作失败']; } } echo_json($msgdata); } return $this->renderAjax('add',array('model'=>$model)); } function actionEdit() { $menu_id = $this->getKeyId('menu_id'); $model = Linkmenu::findOne($menu_id); check_record_exists($model); if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){ $model->flagtext = str_replace(",",",",$model->flagtext); if(!$model->validate()) { $msgdata = ['error' => 1,'msg' => $model->returnFirstError()]; } else { if($model->save()) { $msgdata = ['error' => 0,'msg' => '操作成功']; } else { $msgdata = ['error' => 1,'msg' => '操作失败']; } } echo_json($msgdata); } return $this->renderAjax('add',array('model'=>$model)); } //删除 public function actionDel() { $id = $this->getKeyId('menu_id'); $model = Linkmenu::findOne($id); check_record_exists($model); if($model->has_child==1) { $msgdata = ['error' => 1,'msg' => '该菜单有子级菜单,删除失败!']; echo_json($msgdata); } if($model->delete()) { if($model->parent_id)$this->_updateChilds($model->parent_id); $msgdata = ['error' => 0,'msg' => '操作成功!']; } else { $msgdata = ['error' => 1,'msg' => '操作失败!']; } echo_json($msgdata); } //批量删除 public function actionMultidelete() { $ids = Yii::$app->request->get('ids'); if(!empty($ids)) { $ids = explode(",",$ids); if(is_array($ids))foreach($ids as $id) { $model = Linkmenu::findOne($id); if($model->has_child==1)continue; if($model->delete()) { if($model->parent_id)$this->_updateChilds($model->parent_id); } } $msgdata = ['error' => 0,'msg' => '操作成功']; } else { $msgdata = ['error' => 1,'msg' => '请选择操作记录']; } echo_json($msgdata); } //子菜单 public function actionData() { $menu_id = $this->getKeyId('menu_id'); $menu = Linkmenu::findOne($menu_id); $menuNameStr = Linkmenu::getMenuNameStr($menu_id,0,' > '); $query = Linkmenu::find(); if (Yii::$app->request->isAjax) { $data = []; if($menu->key_id==0){ $params =['key_id'=>$menu_id,'parent_id'=>0]; } else { $params =['parent_id'=>$menu_id]; } $query = mergeParams($query,$params); $countQuery = clone $query; //分页 if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));} if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));} //排序 if(isset($_GET['sort'])&&isset($_GET['sortOrder'])) { $resultList = $query->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->all(); } else { $resultList = $query->orderBy(['menu_id'=>SORT_ASC])->all(); } foreach($resultList as $result) { $data[] = array('menu_id'=>$result->menu_id,'name'=>$result->name,'parent_id'=>$result->parent_id,'list_order'=>$result->list_order,'disabled'=>$result->disabled); } $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data]; echo_json($result); } $this->tableTitle = array( array('field'=>'menu_id','checkbox'=>false,'formatter'=>'checkboxFormatter','class'=>'col-md-1'), array('field'=>'menu_id','title'=>Linkmenu::getAttributeName('menu_id'),'align'=>'center','class'=>'col-md-2'), array('field'=>'name','title'=>Linkmenu::getAttributeName('name'),'align'=>'center','class'=>'col-md-2'), array('field'=>'disabled','title'=>Linkmenu::getAttributeName('disabled'),'align'=>'center','formatter'=>'switchFormatter','class'=>'col-md-2'), array('field'=>'list_order','title'=>Linkmenu::getAttributeName('list_order'),'align'=>'center','sortable'=>true,'formatter'=>'editFormatter','class'=>'col-md-3'), array('field'=>'operate','title'=>Linkmenu::getAttributeName('operate'),'align'=>'center','events'=>'window.operateEvents','formatter'=>'operateFormatter','class'=>'col-md-2'), ); $this->tableConfig = array('table'=>Linkmenu::shortTableName(),'url'=>$this->createRealUrl(['admin/linkmenu/data','menu_id'=>$menu_id]),'setFieldUrl'=>$this->createRealUrl(['admin/linkmenu/setfield']),'idField'=>Linkmenu::modelPrimaryKey(),'checkbox'=>1,'dropmenu'=>1,'refresh'=>true); //为了传递参数到菜单的动态变量 $_GET['parent_id'] = $menu->parent_id==0?($menu->key_id==0?$menu->menu_id:$menu->key_id):$menu->parent_id; return $this->render('list',array('model'=>new Linkmenu(),'menuNameStr'=>$menuNameStr)); } //添加子菜单 function actionAddsonmenu() { $parent_id = $this->getKeyId('parent_id'); $parentMenu = Linkmenu::findOne($parent_id); $model = new Linkmenu(); if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){ if($parentMenu->key_id==0) { $model->key_id = $parent_id; $model->level = 1; $model->parent_id = 0; } else { $model->key_id = $parentMenu->key_id; $model->level = $parentMenu->level+1; $model->parent_id = $parent_id; } if(!$model->validate()) { $msgdata = ['error' => 1,'msg' => $model->returnFirstError()]; } else { if($model->save()) { $this->_updateChilds($model->parent_id); $msgdata = ['error' => 0,'msg' => '操作成功']; } else { $msgdata = ['error' => 1,'msg' => '操作失败']; } } echo_json($msgdata); } return $this->renderAjax('add',array('model'=>$model)); } //更新子级菜单 private function _updateChilds($id) { $parentModel = Linkmenu::findOne($id); if(!$parentModel||($parentModel->parent_id==0&&$parentModel->key_id==0))return; $childs = array(); $childs[]=$id; $menuList = Linkmenu::find()->where('parent_id='.$id)->all(); if(is_array($menuList)) { foreach($menuList as $menu) { $childs[] = $menu['menu_id']; } } if(!empty($childs)&&count($childs)>1) { asort($childs); $parentModel->arr_child_ids =join(',',$childs); $parentModel->has_child = 1; $parentModel->save(); } else { $parentModel->arr_child_ids =''; $parentModel->has_child = 0; $parentModel->save(); } } }