Laravel配置双模板的方法介绍(代码示例)

发布时间 - 2019-03-02 00:00:00    点击率:

本篇文章给大家带来的内容是关于laravel配置双模板的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在开发过程中, 不时会遇到某些项目需要使用两套模板

如PC端和Mobile端使用不同的模板文件, 以达到最佳的用户体验

遇到这种情况我们应该如何配置Laravel的模板文件呢?

1. 安装whichbrowser/parser 传送门: WhichBrowser/Parser-PHP

用于判断PC或Mobile设备, 按需加载不同的模板

composer require whichbrowser/parser

2. 使用artisan命令新建一个Middleware(中间件)

执行后会在app/Http/Middleware目录生成中间件文件

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类中 按需注册中间件

如注册全局中间件:

protected $middleware = [
    \App\Http\Middleware\Template::class,
];

搞定, 就可以根据不同的设备加载不同的模板文件了

在控制中只需这样, 就可以根据不同的设备来加载不同的模板了

return view('registration.index', $data);

如从PC设备打开网页: 加载 /resources/views/pc/registration/index.blade.php 模板

如从移动设备打开网页: 加载 /resources/views/mobile/registration/index.blade.php 模板


# php  # laravel  # 中间件  # http  # 加载  # 就可以  # 按需  # 打开网页  # 只需  # 对你  # 会在  # 有一定  # 给大家  # 这种情况 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何配置Horizon来管理队列?(安装和使用)  nodejs redis 发布订阅机制封装实现方法及实例代码  如何用AWS免费套餐快速搭建高效网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  nginx修改上传文件大小限制的方法  java ZXing生成二维码及条码实例分享  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  java获取注册ip实例  jQuery中的100个技巧汇总  Laravel如何实现文件上传和存储?(本地与S3配置)  详解jQuery中的事件  如何在阿里云域名上完成建站全流程?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Python并发异常传播_错误处理解析【教程】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何快速重置建站主机并恢复默认配置?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Java垃圾回收器的方法和原理总结  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  音响网站制作视频教程,隆霸音响官方网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  焦点电影公司作品,电影焦点结局是什么?  Android利用动画实现背景逐渐变暗  php json中文编码为null的解决办法  Laravel如何使用Livewire构建动态组件?(入门代码)  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  制作公司内部网站有哪些,内网如何建网站?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何用已有域名快速搭建网站?  详解Android图表 MPAndroidChart折线图  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  教你用AI将一段旋律扩展成一首完整的曲子  Android Socket接口实现即时通讯实例代码  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何在阿里云通过域名搭建网站?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  如何用IIS7快速搭建并优化网站站点?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在服务器上三步完成建站并提升流量?