在laravel 5.3中运行时具有动态视图文件夹路径

在laravel 5.3中运行时具有动态视图文件夹路径,laravel,laravel-5.3,laravel-blade,laravel-views,Laravel,Laravel 5.3,Laravel Blade,Laravel Views,我正试图在Laravel5.3中构建一个saas应用程序(saas在这里是指软件即服务)。我已经建立了一些服务提供商,收集域名,正在使用的主题和这些特定网站的数据库。现在我正试图通过服务提供商实现具有视图结构的页面。例如,现在我有两个不同的主题,用于两个不同的领域。我在不同文件夹的视图中有一组HTML代码,如下所示: View ----| Theme One --------| Navbar --------| Sliders --------| Tabs --------| Parallax

我正试图在
Laravel5.3
中构建一个saas应用程序(saas在这里是指软件即服务)。我已经建立了一些服务提供商,收集域名,正在使用的主题和这些特定网站的数据库。现在我正试图通过
服务提供商
实现具有
视图结构的页面。例如,现在我有两个不同的主题,用于两个不同的领域。我在不同文件夹的视图中有一组HTML代码,如下所示:

View
----| Theme One
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
----| Theme Two
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
public function boot()
{
    $this->webView = $this->setPath();
    $this->app->singleton('webView', function()
    {
        return $this->webView;
    });
}

public function setPath()
{
    $themename = App::make('themename')
    if($themename)
    {
        $setpath = "..Path\Views\" . $themename;
        Config::set('view.paths', $setpath);
        return null;
    }
    else
    {
        return "Not found";
    }
}
现在,我想为这些域动态定义文件夹结构,以便它能够显示它们各自主题的模块。假设如果我想包含导航栏的子视图,我只需要编写

@include('Navbar')
它应该访问相应的主题导航栏文件夹或子视图。我考虑创建一个服务提供商,并尝试通过以下方式设置路径:

View
----| Theme One
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
----| Theme Two
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
public function boot()
{
    $this->webView = $this->setPath();
    $this->app->singleton('webView', function()
    {
        return $this->webView;
    });
}

public function setPath()
{
    $themename = App::make('themename')
    if($themename)
    {
        $setpath = "..Path\Views\" . $themename;
        Config::set('view.paths', $setpath);
        return null;
    }
    else
    {
        return "Not found";
    }
}

但我想当应用程序引导时,它会忽略配置,我知道一定有更好的方法来实现这一点。请指导我。

首先在
应用程序\Providers
中创建一个
像这样,或者在
应用程序/Providers
中复制
照明\View\ViewServiceProvider
像这样更改

<?php

namespace App\Providers;

use Illuminate\View\FileViewFinder;
use Illuminate\View\ViewServiceProvider as ConcreteViewServiceProvider;

class ViewServiceProvider extends ConcreteViewServiceProvider
{
    /**
     * Register the view finder implementation.
     *
     * @return void
     */
    public function registerViewFinder()
    {
        $this->app->bind('view.finder', function ($app) {
            $paths = $app['config']['view.paths'];

            //change your paths here
            foreach ($paths as &$path)
            {
                $path .= time();//change with your requirement here I am adding time value with all path
            }

            return new FileViewFinder($app['files'], $paths);
        });
    }
}

谢谢你的回答。现在假设我需要将其更改为文件夹
themeone
,该文件夹存储在变量
$themename
中,其位置是somepath\views\themeone,我需要编写
$path=“somepath\views\”.$themename
foreach语句中
@NitishKumar是的,想法几乎相同,您可以在此处根据您的条件设置路径。