自定义菜单创建
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN;
后台需要写添加菜单的方法,在前台进行调用。
代码如下:
//添加菜单
public function menuedit(){
//正在使用id的is_use改为1
//获取当前正在使用的公众号
$mp = getCurrentMp();
if(empty($mp)){
$this->ajaxReturn(array('error'=>true,'msg'=>'无法使用此公众号','url'=>U('mp/index')));
exit;
}
$data1 = I('post.data');
foreach($data1 as &$value){
$value['mp_id'] = $mp['id'];
}
// var_dump($data1);
// exit;
$model = M('mp_menu');
$model-> where("mp_id={$mp['id']}")->delete();
$model->addAll($data1);
include APP_PATH . 'LaneWeChat/lanewechat.php';
$ret = \LaneWeChat\Core\Menu::setMenu($data1);
// dump($ret);
// exit;
if($ret===true){
$this->ajaxReturn(array('msg'=>'创建菜单成功'));
}else{
$this->ajaxReturn(array('msg'=>$ret));
}
getCurrentMp()是自己写的一个简便方法;
前台使用js进行调用,代码如下:
menu.prototype.submit = function () {
var data = [];
function getdata($span) {
var menudata = {};
menudata.name = $span.text();
menudata.type = $span.attr('data-type') || '';
menudata.content = $span.data('content') || '';
return menudata;
}
$('li.parent-menu').map(function (index, item) {
if (!$(item).hasClass('menu-add')) {
var menudata = getdata($(item).find('a:first span'));
menudata.index = index + 1;
menudata.pindex = 0;
menudata.sub = [];
menudata.sort = index;
data.push(menudata);
$(item).find('.sub-menu ul li:not(.menu-add) span').map(function (ii, span) {
var submenudata = getdata($(span));
submenudata.index = (index + 1) + '' + (ii + 1);
submenudata.pindex = menudata.index;
submenudata.sort = ii;
data.push(submenudata);
});
}
});
var data = (data == '')?'':data;
$.post(
'{:U("menuedit")}',
{data:data},
function (res) {
layer.msg(res.msg);
},
"json"
)
};
new menu();
});