在開發過程當中, 不時會遇到某些項目須要使用兩套模板php
如PC端和Mobile端使用不一樣的模板文件, 以達到最佳的用戶體驗html
遇到這種狀況咱們應該如何配置Laravel的模板文件呢?git
whichbrowser/parser
傳送門: WhichBrowser/Parser-PHP 用於判斷PC或Mobile設備, 按需加載不一樣的模板github
composer require whichbrowser/parser
artisan
命令新建一個Middleware
(中間件)執行後會在app/Http/Middleware
目錄生成中間件文件app
php artisan make:middleware Template
Template.php
文件class Template { protected $except = []; public function handle($request, Closure $next) { $result = new WhichBrowser\Parser(getallheaders()); // 若是是桌面類型, 返回true $isDesktop = $result->isType('desktop'); if ($isDesktop) { // 加載pc端的模板文件 $path = resource_path('views/pc/'); } else { // 加載mobile端的模板文件 $path = resource_path('views/mobile/'); } // 獲取視圖查找器實例 $view = app('view')->getFinder(); // 從新定義視圖目錄 $view->prependLocation($path); // 返回請求 return $next($request); } }
在app/Http/Kernel.php
類中 按需註冊中間件composer
如註冊全局中間件:ui
protected $middleware = [ \App\Http\Middleware\Template::class, ];
搞定, 就能夠根據不一樣的設備加載不一樣的模板文件了code
在控制中只需這樣, 就能夠根據不一樣的設備來加載不一樣的模板了htm
return view('registration.index', $data);
如從PC設備打開網頁: 加載 /resources/views/pc/registration/index.blade.php
模板中間件
如從移動設備打開網頁: 加載 /resources/views/mobile/registration/index.blade.php
模板
原文: Laravel 配置雙模板