2017-01-10 51 views
0

我試圖在laravel 5.3中建立一個saas應用程序(這裏的saas意思是軟件作爲服務)。我建立了幾個收集域名,使用的主題和那些特定網站的數據庫的服務提供商。現在我試圖通過​​到service provider來實現頁面。現在,例如,我對兩個不同的域有兩個不同的主題。我在不同的文件夾視圖中的一組HTML代碼,像這樣:在laravel 5.3運行期間有一個動態的查看文件夾路徑

View 
----| Theme One 
--------| Navbar 
--------| Sliders 
--------| Tabs 
--------| Parallax 
--------| Iconbox 
--------| template.blade.php 
----| Theme Two 
--------| Navbar 
--------| Sliders 
--------| Tabs 
--------| Parallax 
--------| Iconbox 
--------| template.blade.php 

現在我要動態定義的文件夾結構,這些域,以便它應該顯示其各自的主題模塊。就像想,如果我想包括導航欄的子視圖我只是寫

@include('Navbar') 

,它應該訪問相應的主題導航欄文件夾或子視圖。我認爲做一個服務提供商,並試圖通過配置來設置的路徑是這樣的:

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"; 
    } 
} 

但我想,當應用程序自舉,它將忽略的配置,我知道必須有實現這個更好的方式。請指導我。

回答

1

首先創建一個ViewServiceProviderApp\Providers這樣或複製在這樣

<?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); 
     }); 
    } 
} 

app/Providers &變化Illuminate\View\ViewServiceProvider然後更換您的Illuminate\View\ViewServiceProvider::class,App\Providers\ViewServiceProvider::class,config/app.php。這將做到這一點。

+0

感謝您的回答。現在假設我需要將其更改爲'themeone'文件夾,它存儲在變量'$ themename'中,它的位置是somepath \ views \ themeone我需要編寫'$ path =「somepath \ views \」。$ themename'在'foreach語句'裏面' –

+0

@NitishKumar是的想法是接近於相同或者你可以在這裏設置你的條件的路徑。 –

+0

好的,很好的答案。謝謝。 –