Laravel 配置雙模板

在開發過程當中, 不時會遇到某些項目須要使用兩套模板php

如PC端和Mobile端使用不一樣的模板文件, 以達到最佳的用戶體驗html

遇到這種狀況咱們應該如何配置Laravel的模板文件呢?git

1. 安裝whichbrowser/parser 傳送門: WhichBrowser/Parser-PHP

用於判斷PC或Mobile設備, 按需加載不一樣的模板github

composer require whichbrowser/parser

2. 使用artisan命令新建一個Middleware(中間件)

執行後會在app/Http/Middleware目錄生成中間件文件app

php artisan make:middleware Template

3. 編輯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);
    }
}

4. 最後註冊中間件

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 配置雙模板

相關文章
相關標籤/搜索