首页 > 解决方案 > 如何为桌面和移动视图动态定义视图文件夹

问题描述

基本上,我有一个这样的目录:

├── views
|   ├── mobile
|   |   ├── main.blade.php
|   └── desktop
|       ├── main.blade.php

我有 jensegers/agent,所以我可以检测用户是否正在使用移动/桌面,然后动态加载 /mobile 或 /desktop 视图。

我有一个 AgentServiceProvider 可以检测它是否是移动的,我可以将它传递给视图,但我不知道如何动态修改目录。

我知道路径是静态加载在 view.php 文件中的:

'paths' => [
    resource_path('views'),
],

如何将视图目录动态设置为视图/桌面和视图/移动?

先感谢您。

标签: laravel

解决方案


您可以动态更新当前请求的配置,例如在 AgentServiceProvider 中:

config([' view.paths' => resource_path('views/mobile')]);

该值将根据包的结果是动态的,例如

$path = $agent->isMobile() ? 'views/mobile' : 'views/desktop';
config([' view.paths' => resource_path($path)]);

推荐阅读