TP5中手機端和PC端的實現方式
阿新 • • 發佈:2018-12-27
TP5中手機端和PC端判斷是實現方式
一、使用自定義的判定方法
首先在
application>common.php
公共檔案中寫入用於判定裝置登入的ismobile方法:function ismobile() { // 如果有HTTP_X_WAP_PROFILE則一定是移動裝置 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) return true; //此條摘自TPM智慧切換模板引擎,適合TPM開發 if (isset ($_SERVER['HTTP_CLIENT'
然後在
application>index>controller>Base.php
前臺index模組的基類控制器Base中重寫fetch方法:/** *載入模板輸出(電腦和手機) * @accessprotected * @paramstring$template模板檔名 * @paramstring$mobiletemplate手機模板檔名 * @paramarray$vars模板輸出變數 * @paramarray$replace模板替換 * @paramarray$config模板引數 * @returnmixed */ protected function fetch($template = '', $mobiletemplate = '', $vars = [], $replace = [], $config = []) { if (ismobile()) { return $this->view->fetch($mobiletemplate, $vars, $replace, $config); } else { return $this->view->fetch($template, $vars, $replace, $config); } }
最後在
application>index>controller>Index
繼承與基類Base的控制器Index的方法index中最後分別傳入pc端的路徑和mobile端的路徑即可。return $this->fetch('default/index/index','mobile/index/index');
前面的
default/index/index
是pc端對應的路徑,後面的mobile/index/index
是mobile端對應的路徑。
二、使用TP5自帶的判斷方法(推薦使用,已優化)
通過上面的方法我們可以看出,雖然起作用,但是每次 都要傳入兩個路徑,很是繁瑣。
首先在
application>common.php
公共檔案中寫入用於判定裝置登入的常量VIEW_PATH
:if (\think\Request::instance()->isMobile()) { define('VIEW_PATH', __DIR__ . '/../application/index/view/mobile/'); } else { define('VIEW_PATH', __DIR__ . '/../application/index/view/default/'); }
接著在
application>index>config.php
模組index的配置檔案config.php中進行模板變數的替換:return [ "template"=>[ // 模板路徑 'view_path' => VIEW_PATH, ], ];
最後在控制器的方法中只需要直接fetch一個路徑即可。
return $this->fetch();
Tip:前臺頁面的目錄結構如圖所示:
注意default和mobile下的目錄結構保持一致