亚洲欧美黑人深猛交群,国产一级a毛一级a看免费视频,日韩电影在线观看免费观看完整版,91久久国产成人免费观看资源

公眾號自定義菜單

微信公眾號開發之創建自定義菜單數據拼接

在開啟長沙微信公眾號開發者模式以后,在微信公眾號平臺設置的自動回復和自定義菜單會失效,所以我們要進行自定義

當然, 產品會讓你將這個功能開發成后臺功能,想什么時候更改就什么時候更改,多酸爽 

自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單,自定義菜單的接口還包括了可實現10種類型按鈕

我們項目基本用于跳轉頁面,不做推送啥的,所以只用view:跳轉URL用戶點擊view類型按鈕后,微信客戶端將會打開開發者在按鈕中填寫的網頁URL

微信的文檔也很酸爽,到底用json還是數組,奇葩啊

{
    "button":[
     {
         "type":"view",
          "name":"官方網站",
          "url":"https://qq52o.me"
      },
      {
          "name":"技術筆記",
           "sub_button":[
           {
               "type":"view",
               "name":"PHP",
               "url":"https://qq52o.me/category/php"
            },
           {
               "type":"view",
               "name":"Python",
               "url":"https://qq52o.me/category/python"
            },
           {
               "type":"view",
               "name":"Linux",
               "url":"https://qq52o.me/category/linux"
            }]
       }]
 }

將就看吧,二級菜單的一級菜單只需要顯示名稱,多了一個sub_button數組

跳轉頁面的參數也是唯一的:typenameurl

后臺給設置一個CRUD操作就行,添加需要顯示的名稱,URL,如果是二級的話,還要選擇關聯一級菜單

// 0 表示為一級菜單$data = WechatMenu::find()->where(['first_id' => 0])->asArray()->all();$secMenuData = [];foreach ($data as $key => $val){
        $secMenuData[$key]['name'] = $val['name'];
        // 有二級菜單的時候 一級不需要鏈接 留空
        if(empty($val['url'])) {
            // 找二級菜單的信息
            $son = WechatMenu::find()->where(['first_id' => $val['id']])->asArray()->all();
            if(!empty($son)){
                foreach ($son as $k =>  $value) {
                    $secMenuData[$key]['sub_button'][] = [
                        'type' => 'view',
                        'url' => $value['url'],
                        'name' => $value['name'],
                    ];
                }
            }
        }else{
            $secMenuData[$key]['type'] = 'view';
            $secMenuData[$key]['url'] = $val['url'];
        }}

得到數據以后,轉一下json格式,這里要注意一下的是

需要加上json_encode的第二個參數JSON_UNESCAPED_UNICODE

不然會提示errcode":40033,"errmsg":"invalid charset. please check your request, if include uxxxx will create錯誤

原因是把中文自動進行了unicode編碼

還要注意外面還有一個button,我們再進行拼接

rsort($secMenuData);$secMenuData = ['button'=>$secMenuData];$menuJson = json_encode($secMenuData,JSON_UNESCAPED_UNICODE);//$menuJson = "{"button":".$secMenuData."}";$wechat = new WeChat(['appId'=>$appid,'appSecret' => $appKey]);$data = $wechat->setWeChatMenu($menuJson);if($data['errcode'] == 0){
    Yii::$app->session->setFlash('success','應用微信成功!');
    return $this->redirect(['index']);}else{
    Yii::$app->session->setFlash('error',$data['errmsg'].'請截圖聯系技術人員!');
    return $this->redirect(['index']);}

轉義是因為我之前用的單引號,他提示我{"errcode":40016,"errmsg":"invalid button size"},轉義之后就正常了

不想拼接的話就在之前拼接為數組,一起進行json_encode就ok了

然后就調用定義的設置微信自定義菜單的方法就ok了


?