|
|
@ -4,7 +4,7 @@ namespace LaneWeChat\Core;
|
|
|
|
class Menu {
|
|
|
|
class Menu {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 添加菜单,一级菜单最多3个,每个一级菜单最多可以有5个二级菜单
|
|
|
|
* 添加菜单,一级菜单最多3个,每个一级菜单最多可以有5个二级菜单
|
|
|
|
* @param $menuList
|
|
|
|
* @param $menuList 菜单列表数组
|
|
|
|
* array(
|
|
|
|
* array(
|
|
|
|
* array('id'=>'', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''),
|
|
|
|
* array('id'=>'', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''),
|
|
|
|
* array('id'=>'', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''),
|
|
|
|
* array('id'=>'', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''),
|
|
|
@ -21,7 +21,7 @@ class Menu{
|
|
|
|
* 7、pic_weixin:弹出微信相册发图器,用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
|
|
|
|
* 7、pic_weixin:弹出微信相册发图器,用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
|
|
|
|
* 8、location_select:弹出地理位置选择器,用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
|
|
|
|
* 8、location_select:弹出地理位置选择器,用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
* @return bool 返回是否成功创建菜单
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public static function setMenu($menuList) {
|
|
|
|
public static function setMenu($menuList) {
|
|
|
|
// 树形排布,将一维数组转换为树形结构,以支持子菜单
|
|
|
|
// 树形排布,将一维数组转换为树形结构,以支持子菜单
|
|
|
@ -42,7 +42,6 @@ class Menu{
|
|
|
|
if ($menu['type'] == 'view') {
|
|
|
|
if ($menu['type'] == 'view') {
|
|
|
|
// 对于view类型的菜单,将code值作为URL
|
|
|
|
// 对于view类型的菜单,将code值作为URL
|
|
|
|
$menuList[$key]['url'] = urlencode($menu['code']);
|
|
|
|
$menuList[$key]['url'] = urlencode($menu['code']);
|
|
|
|
//处理URL。因为URL不能在转换JSON时被转为UNICODE
|
|
|
|
|
|
|
|
} else if ($menu['type'] == 'click') {
|
|
|
|
} else if ($menu['type'] == 'click') {
|
|
|
|
// 对于click类型的菜单,将code值作为key
|
|
|
|
// 对于click类型的菜单,将code值作为key
|
|
|
|
$menuList[$key]['key'] = $menu['code'];
|
|
|
|
$menuList[$key]['key'] = $menu['code'];
|
|
|
@ -50,9 +49,9 @@ class Menu{
|
|
|
|
// 对于其他类型的菜单,将code值作为key,并初始化sub_button数组
|
|
|
|
// 对于其他类型的菜单,将code值作为key,并初始化sub_button数组
|
|
|
|
$menuList[$key]['key'] = $menu['code'];
|
|
|
|
$menuList[$key]['key'] = $menu['code'];
|
|
|
|
if (!isset($menu['sub_button'])) $menuList[$key]['sub_button'] = array();
|
|
|
|
if (!isset($menu['sub_button'])) $menuList[$key]['sub_button'] = array();
|
|
|
|
}// 移除不需要的code字段
|
|
|
|
}
|
|
|
|
|
|
|
|
// 移除不需要的code字段
|
|
|
|
unset($menuList[$key]['code'], $menuList[$key]['id'], $menuList[$key]['pid']);
|
|
|
|
unset($menuList[$key]['code'], $menuList[$key]['id'], $menuList[$key]['pid']);
|
|
|
|
//处理PID和ID,移除不需要的id和pid字段
|
|
|
|
|
|
|
|
// 处理名字,对菜单名称进行编码,以确保在JSON序列化时不会转换成Unicode字符
|
|
|
|
// 处理名字,对菜单名称进行编码,以确保在JSON序列化时不会转换成Unicode字符
|
|
|
|
$menuList[$key]['name'] = urlencode($menu['name']);
|
|
|
|
$menuList[$key]['name'] = urlencode($menu['name']);
|
|
|
|
// 如果存在子菜单,则递归处理子菜单
|
|
|
|
// 如果存在子菜单,则递归处理子菜单
|
|
|
@ -62,7 +61,6 @@ class Menu{
|
|
|
|
// 根据子菜单类型处理type和code
|
|
|
|
// 根据子菜单类型处理type和code
|
|
|
|
if ($son['type'] == 'view') {
|
|
|
|
if ($son['type'] == 'view') {
|
|
|
|
$menuList[$key]['sub_button'][$k]['url'] = urlencode($son['code']);
|
|
|
|
$menuList[$key]['sub_button'][$k]['url'] = urlencode($son['code']);
|
|
|
|
// 对子菜单URL进行编码
|
|
|
|
|
|
|
|
} else if ($son['type'] == 'click') {
|
|
|
|
} else if ($son['type'] == 'click') {
|
|
|
|
$menuList[$key]['sub_button'][$k]['key'] = $son['code'];
|
|
|
|
$menuList[$key]['sub_button'][$k]['key'] = $son['code'];
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -71,7 +69,6 @@ class Menu{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 移除不需要的code字段
|
|
|
|
// 移除不需要的code字段
|
|
|
|
unset($menuList[$key]['sub_button'][$k]['code'], $menuList[$key]['sub_button'][$k]['id'], $menuList[$key]['sub_button'][$k]['pid']);
|
|
|
|
unset($menuList[$key]['sub_button'][$k]['code'], $menuList[$key]['sub_button'][$k]['id'], $menuList[$key]['sub_button'][$k]['pid']);
|
|
|
|
// 移除不需要的id和pid字段
|
|
|
|
|
|
|
|
// 处理名字。因为汉字不能在转换JSON时被转为UNICODE
|
|
|
|
// 处理名字。因为汉字不能在转换JSON时被转为UNICODE
|
|
|
|
$menuList[$key]['sub_button'][$k]['name'] = urlencode($son['name']);
|
|
|
|
$menuList[$key]['sub_button'][$k]['name'] = urlencode($son['name']);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -87,7 +84,8 @@ class Menu{
|
|
|
|
// 发起POST请求,将菜单数据发送到微信服务器
|
|
|
|
// 发起POST请求,将菜单数据发送到微信服务器
|
|
|
|
$result = Curl::callWebServer($url, $data, 'POST');
|
|
|
|
$result = Curl::callWebServer($url, $data, 'POST');
|
|
|
|
return $result['errcode'] == 0 ? true : $result; // 如果微信服务器返回errcode为0,表示菜单创建成功
|
|
|
|
return $result['errcode'] == 0 ? true : $result; // 如果微信服务器返回errcode为0,表示菜单创建成功
|
|
|
|
}// 返回微信服务器返回的结果
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取微信菜单
|
|
|
|
* 获取微信菜单
|
|
|
|
* 此方法用于从微信服务器获取当前公众号的自定义菜单
|
|
|
|
* 此方法用于从微信服务器获取当前公众号的自定义菜单
|
|
|
@ -101,6 +99,7 @@ class Menu{
|
|
|
|
// 发起GET请求,从微信服务器获取菜单信息
|
|
|
|
// 发起GET请求,从微信服务器获取菜单信息
|
|
|
|
return Curl::callWebServer($url, '', 'GET');
|
|
|
|
return Curl::callWebServer($url, '', 'GET');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 删除微信菜单
|
|
|
|
* 删除微信菜单
|
|
|
|
* 此方法用于删除当前公众号的自定义菜单
|
|
|
|
* 此方法用于删除当前公众号的自定义菜单
|
|
|
@ -115,3 +114,27 @@ class Menu{
|
|
|
|
return Curl::callWebServer($url, '', 'GET');
|
|
|
|
return Curl::callWebServer($url, '', 'GET');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
|
|
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
|
|
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
|
|
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
|
|
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|
|
|
|
|
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
|
|
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
|
|
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
|
|
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
|
|
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|
|
|
|
|
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
|
|
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
|
|
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
|
|
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
|
|
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|
|
|
|
|
|
|
|
命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
|
|
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
|
|
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
|
|
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
|
|
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。
|
|
|
|
|
|
|
|
类定义:class Menu 定义了一个用于管理微信自定义菜单的类。
|
|
|
|
|
|
|
|
setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。
|
|
|
|
|
|
|
|
getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
|
|
|
|
|
|
|
|
delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
|
|
|
|