搜尋
首頁php教程php手册微信公众平台自定义菜单后台代码实现

对于新版的微信自定义菜单的创建,前端利用ajax的方式依次给后端传输自定义菜单信息,后端首先将信息存入到数据库中,然后发布时根据数据库中存储的信息进行数据组织。然后调用API接口进行自定义菜单的发布。前端数据回填直接拉取数据库中的信息即可。
//创建自定义菜单<br>         public function createMenu(){<br>             /*<br>              * 自定义菜单创建逻辑<br>              * 1、首先判断创建的为主菜单还是子菜单。<br>              * 2、假如为主菜单,判断其是否已经创建过子菜单,假如有,则只能修改菜单名字,否则,等同于子菜单的创建;假如为子菜单,则需要选择创建类型<br>              * 3、创建类型判断:发送消息(图文消息、文字、图片、卡券)、跳转网页<br>              * 4、对于发送消息的类型,需要进行相关信息的收集<br>              */<br>             //对数据库中处理数据表进行处理的逻辑。<br>             /*<br>              * 1、根据数据库中的信息,选择最新的一天的信息作为创建自定义菜单的选择,将这部分数据作为选择的原始数据<br>              * 2、查询主菜单信息,组成数组,用到去重。<br>              * 3、查询子菜单信息,组成数组<br>              * 4、组织数据<br>              */<br> <br>             header("Content-Type:text/html;charset=utf-8");<br>             //实例化menu表<br>             $menu = M('weixin_menu');<br>             $create_time = $menu->order('create_time desc')->limit(1)->getField('create_time');<br>             //查询主菜单信息,组成数组,用到去重,排序<br>             $zhu_name = $menu->distinct(true)->where("create_time='$create_time'")->field('zhu_name')->select();<br>             //dump($zhu_name);<br>             //根据查询到的对应的主菜单的名称,去数据库中找到数据表对应的pid;假如pid为0,则直接取其uid<br>             //主菜单数据名称组织<br> <br>             $menu_data = array();<br>             foreach($zhu_name as $key=>$value){<br>                 $tip = $value['zhu_name'];<br>                 //数组查询条件<br>                 $data['create_time'] = $create_time;<br>                 $data['zhu_name'] = $tip;<br>                 $pid = $menu->where($data)->getField('pid');<br>                 if($pid==0){<br>                     $pid = $menu->where($data)->getField('uid');<br>                 }<br>                 $menu_data[$pid] = array();<br>                 //此处直接进行数据的组织 根据pid找到对应的子菜单<br>                 $zi_data['pid'] = $pid;<br>                 $zi_data['create_time'] = $create_time;<br>                 $zi_menu_data = $menu->where($zi_data)->order('uid')->select();    //假如此数据为空,则证明没有子菜单;否则组织子菜单的信息<br>                 if(!empty($zi_menu_data)){          //组织子菜单数据<br>                     $menu_data[$pid]['name'] = $tip;<br>                     foreach($zi_menu_data as $key=>$value){<br>                         //菜单的相应类型判断<br>                         switch ($value['type']){<br>                             case 'view_limited':<br>                                 $type = 'media_id';<br>                                 $type_data = $value['type_media_id'];<br>                                 break;<br>                             case 'media_id':<br>                                 $type = 'media_id';<br>                                 $type_data = $value['type_media_id'];<br>                                 break;<br>                             case 'click':<br>                                 $type = 'key';<br>                                 $type_data = $value['type_key'];<br>                                 break;<br>                             case 'view':<br>                                 $type = 'url';<br>                                 $type_data = $value['type_url'];<br>                                 break;<br>                         }<br>                         $menu_data[$pid]['sub_button'][$key] = array(<br>                             'type'=>$value['type'],<br>                             'name'=>$value['zi_name'],<br>                             $type=>$type_data<br>                         );<br>                     }<br>                 }else{                              //组织主菜单数据<br>                     $zhu_data['uid'] = $pid;<br>                     $zhu_data['pid'] = 0;<br>                     $zhu_data['create_time'] = $create_time;<br>                     $zhu_menu_data = $menu->where($zhu_data)->find();<br>                     $menu_data[$pid]['name'] = $tip;<br>                     //菜单的相应类型判断<br>                     switch ($zhu_menu_data['type']){<br>                         case 'view_limited':<br>                             $z_type = 'media_id';<br>                             $z_type_data = $zhu_menu_data['type_media_id'];<br>                             break;<br>                         case 'media_id':<br>                             $z_type = 'media_id';<br>                             $z_type_data = $zhu_menu_data['type_media_id'];<br>                             break;<br>                         case 'click':<br>                             $z_type = 'key';<br>                             $z_type_data = $zhu_menu_data['type_key'];<br>                             break;<br>                         case 'view':<br>                             $z_type = 'url';<br>                             $z_type_data = $zhu_menu_data['type_url'];<br>                             break;<br>                     }<br>                     $menu_data[$pid]['type'] = $zhu_menu_data['type'];<br>                     $menu_data[$pid][$z_type] = $z_type_data;<br> <br>                 }<br> <br>             }<br>             ksort($menu_data);<br>             sort($menu_data);<br> <br>             $zong_menu_data = array(<br>                 'button'=>$menu_data<br>             );<br>             //dump($zong_menu_data);<br> <br>             $type = 'create';<br>             $m_data = json_encode($zong_menu_data,JSON_UNESCAPED_UNICODE);<br>             $access_token = $this->getToken();<br>             $res = $this->MenuAPI($type,$access_token,$m_data);<br>             if($res){<br>                 echo 'success';<br>             }<br> <br>         }

附件 自定义菜单.zip ( 1.4 MB 下载:161 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。