本教程基於phpWeChat核心框架1.1.0+版本。下載地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20
通過前面六講的系列教程,我們完成了一個包含后台的文章管理模塊。但,phpWeChat的初衷並不僅限於此,幫您迅速創建一個PC網站+微信公共號才是滿足時代需求的模塊。
今天,我們開始《10天學會phpWeChat》的第七講:創建一個自適應PC網站+H5移動端的模塊。
還以我們一開始創建的hello world模塊為例。
1、進入模塊管理,進行模塊配置,我們勾選:這是一個兼具PC+公眾號的模塊(如果選中此項,程序將自動調用2套視圖和2個控制器進行Pc和微信端的切換)選項,如圖所示:
在phpWeChat1.1.0+版本中,我們增加了這個選項,一旦勾選,系統將自動根據用戶所處的瀏覽環境(PC還是手機)來自動調用不同的前端控制器和視圖文件,從而實現同一模塊、同一URL在不同操作環境下的不同視圖展示。
2、編輯H5和PC的控制器和視圖文件
在phpWeChat1.1.0+版本的模塊目錄里,我們定義了h5_index.php為自適應模塊的移動端前端控制器,index.php為自適應模塊的PC端前端控制器;定義了template/h5_default/為自適應模塊的移動前端視圖目錄,template/default/為自適應模塊的PC端前端視圖目錄。
如果,一個模塊不是自適應模塊(即沒有勾選[這是一個兼具PC+公眾號的模塊(如果選中此項,程序將自動調用2套視圖和2個控制器進行Pc和微信端的切換)]選項),那么h5_index和h5_default 目錄則是無效目錄,實際開發中不用顧及。
我們分別編輯h5_index.php和index.php
h5_index.php
1 <?php 2 use wechat\hello\hello; 3 use phpWeChat\Area; 4 use phpWeChat\CaChe; 5 use phpWeChat\Config; 6 use phpWeChat\Member; 7 use phpWeChat\Module; 8 use phpWeChat\MySql; 9 use phpWeChat\Order; 10 use phpWeChat\Upload; 11 12 !defined('IN_APP') && exit('Access Denied!'); 13 14 switch($action) 15 { 16 case 'index': 17 echo '這是自適應模塊的移動端前端控制器'; 18 exit(); 19 break; 20 default: 21 wealert('違法請求',false); 22 break; 23 } 24 ?>
index.php
1 <?php 2 //自適應模塊的PC前端控制器 3 use wechat\hello\hello; 4 use phpWeChat\Area; 5 use phpWeChat\CaChe; 6 use phpWeChat\Config; 7 use phpWeChat\Member; 8 use phpWeChat\Module; 9 use phpWeChat\MySql; 10 use phpWeChat\Order; 11 use phpWeChat\Upload; 12 13 !defined('IN_APP') && exit('Access Denied!'); 14 15 switch($action) 16 { 17 case 'index': 18 //從數據表讀取數據並賦給數組$data 19 //$data=Hello::dataList(); 20 echo '這是自適應模塊的PC端前端控制器'; 21 exit(); 22 break; 23 case 'detail': 24 $data=Hello::dataGet($id); //$id 可以改成$_GET['id'] 25 break; 26 case 'tougao': 27 28 break; 29 case 'tougaosave': 30 //print_r($info); 31 32 $op=Hello::dataInsert($info); 33 34 if($op) 35 { 36 echo '文章投稿成功,ID為'.$op; 37 } 38 else 39 { 40 echo '文章投稿失敗'; 41 } 42 exit(); 43 break; 44 //以下 case 條件僅為 示例。您可以根據業務邏輯自由修改和拓展 45 46 //case 'index': 47 48 //在此寫 index.php?m=hello&a=index 時的邏輯 49 50 //break; 51 52 //case 'list': 53 54 //在此寫 index.php?m=hello&a=list 時的邏輯 55 56 //break; 57 58 //以此類推... 59 60 //case '...': 61 62 //在此寫 index.php?m=hello&a=... 時的邏輯 63 64 //break; 65 66 default: 67 break; 68 } 69 ?>
3、查看效果
在谷歌瀏覽器里直接訪問http://www.example.com/index.php?m=hello&a=index,呈現如下圖:
在谷歌瀏覽器里模擬手機訪問,然后刷新,則呈現如下圖:
如預期所想,我們達到了自己的目的。
在上面的示例中,我們簡單的實現了一個自適應PC+手機的小型模塊,至於如何在分別的控制器中讀取視圖數據庫數據並展示給視圖,原理和操作方法跟前面幾講說的是一樣的。只是需要編寫2個控制器和2套視圖文件而已。