1.首先我们要有appid(wx4ff531ee8a470861)和appsecret(2ec9b2f1a1f67b8743d23f9fc70c1c97)。
2.这里我们用的是rh_mp与rh_mp_menu数据表。
3.首先我们在Common模块的Common文件夹下创建function.php文件,在里面我们写入以下获取access_token的代码和获取当前公众号的代码:
function getAccess_token(){ $mp=M('mp')->where('is_use=1')->find(); if(empty($mp)) return false; $id=$mp['id']; if(empty($mp['access_token']) || $mp['expire_time']<time()){ $appid=$mp['appid']; $appsecret=$mp['appsecret']; $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;//接口 include APP_PATH.'LaneWeChat/lanewechat.php'; $arr= \LaneWeChat\Core\Curl::callWebServer($url,'','GET'); // print_r($arr); // exit; if(isset($arr['access_token'])){ $data['access_token']=$arr['access_token']; $data['expire_time']=$arr['expires_in']+ time()-200; // print_r($data); // exit; // $data=M('mp')->create($data); M("mp")->where("id=$id")->save($data); return $arr['access_token']; }else{ return false; } }else{ return $mp['access_token']; }
function getCurrentMp(){ $mp=M('mp')->where('is_use=1')->find(); return $mp; }
在menuController.class.php中增加以下代码:
<?php namespace Home\Controller; use Think\Controller; use LaneWeChat\Core\menu; // define('WECHAT_APPID','wx4ff531ee8a470861'); // define('WECHAT_APPSECRET','2ec9b2f1a1f67b8743d23f9fc70c1c97'); class MenuController extends Controller { public function index(){ $mp=getCurrentMp(); if(empty($mp)){ $this->error('无此公账号',U('mp/index')); } $data=M('mp_menu')->where("mp_id={$mp['id']}")->order('id')->select(); $data2=$data; foreach ($data as $k => $v) { foreach ($data2 as $k2 => $v2) { if($v['index']==$v2['pindex']){ $data[$k]['sub'][]=$v2; unset($data[$k2]); } } } $this->assign('mpInfo',$mp); $this->assign('list',$data); $this->display(); } public function menuedit(){ $mp=getCurrentMp(); if(empty($mp)){ $this->ajaxReturn(array('error'=>true,'msg'=>'无此公账号','url'=>U('mp/index'))); exit; } $data=I('post.data'); foreach ($data as &$value) { $value['mp_id']=$mp['id']; } // }print_r($value); // exit; // $this->ajaxReturn($data); // $arr=array(); // foreach ($data1 as $key => $value) { // $row=array(); // $row['mp_id']=$mp['id']; // $row['index']=$value['id']; // $row['pindex']=$value['pid']; // $row['name']=$value['name']; // $row['content']=$value['code']; // $row['type']=$value['type']; // $row['sort']=$value['sort']; // $arr[]=$row; // } $model=M('mp_menu'); $model->where("mp_id={$mp['id']}")->delete(); $model->addAll($data); // $this->ajaxReturn(array('error'=>false,'data'=>$arr)); // exit; // $data2=$data1; // foreach ($data1 as $key1 => $value1) { // foreach ($data2 as $key2 => $value2) { // if($value1['id']==$value2['pid']){ // $data1[$key1]['type']=''; // $data1[$key1]['code']=''; // break; // } // } // unset($data1[$key1]['sort']); // if($value['type']='event'){ // $value['type']=$value['code']; // $value['code']='k_'.rand(100,999); // } // } include APP_PATH.'LaneWeChat/lanewechat.php'; $ret= Menu::setMenu($data); if($ret===true){ $this->ajaxReturn(array('msg'=>'创建菜单成功')); }else{ $this->ajaxReturn(array('msg'=>$ret)); } // file_put_contents('menu.txt',$ret); // $this->ajaxReturn($ret); } public function downmenu(){ $mp = getCurrentMp(); // print_r($mp); // exit; $mp_id = $mp['id']; include APP_PATH . 'LaneWeChat/lanewechat.php'; $menu = Menu::getMenu($data); // print_r($menu); // exit; // print_r($menu['menu']['button']); // exit; $menu = $menu['menu']['button']; $arr = array(); $index = 1; foreach ($menu as $key => &$value) { $value['mp_id']= $mp_id; $value['index'] = $index; $value['pindex'] = 0; $value['sort'] = $index; if(!empty($value['sub_button'])){ $value['type'] = '';//设置一级菜单,默认值 $value['content'] = '';//设置一级菜单,默认值 $sub_menu = $value['sub_button']; //把二级菜单入到变量$sub_menu unset($value['sub_button']); $arr[] = $value; $subindex = 1; foreach ($sub_menu as $subkey=>&$subvalue) { $subvalue['mp_id'] = $mp_id; $subvalue['index'] = $index . $subindex; $subvalue['pindex'] = $index; $subvalue['sort'] = $subindex; if($subvalue['type']== 'click'){ $subvalue['content'] = $subvalue['key']; unset($subvalue['key']); }else if($subvalue['type']=='view'){ $subvalue['content'] = $subvalue['url']; unset($subvalue['url']); }else { $subvalue['content'] = $subvalue['type']; $subvalue['type'] = 'event'; unset($subvalue['key']); } unset($subvalue['sub_button']); $arr[] = $subvalue; $subindex++; } }else{ if($value['type']== 'click'){ $value['content'] = $value['key']; unset($value['key']); }else if($value['type']=='view'){ $value['content'] = $value['url']; unset($value['url']); }else { $value['content'] = $value['type']; $value['type'] = 'event'; unset($value['key']); } unset($value['sub_button']); $arr[] = $value; } $index++; } // print_r($arr); // exit; $model = M('mp_menu'); $model->where("mp_id={$mp['id']}")->delete(); foreach ($arr as $key => $value) { $model->add($value); } $this->redirect('index'); } public function delmenu(){ // $mp=getCurrentMp(); // include APP_PATH . 'LaneWeChat/lanewechat.php'; // $menu = Menu::delMenu($data); // $this->display('index'); $mp = getCurrentMp(); $mp_id = $mp['id']; // print_r($mp_id); // exit; include APP_PATH . 'LaneWeChat/lanewechat.php'; $menu = \LaneWeChat\Core\Menu::delMenu(); // print_r($menu); // exit; $model = M('mp_menu'); $ret=$model->where("mp_id={$mp['id']}")->delete(); if($ret){ $this->success('删除成功'); }else{ $this->error('删除失败'); } } }
最后在页面上创建菜单显示如下图:
这样说明创建菜单成功!
然后我们把数据库清空。
然后我们刷新页面:
当我们点击同步菜单后出现:
这样说明我们已经把服务器的菜单获取到了,并且已经写入数据库了。