123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <?php
- namespace app\modules\admin\controllers;
- use app\common\controllers\BController;
- use app\models\Linkmenu;
- use Yii;
- class LinkmenuController extends BController
- {
- public $layout = 'main';
- public function actionList()
- {
- $query = Linkmenu::find();
- if (Yii::$app->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();
- }
- }
- }
|