2017-08-31 78 views
0

我試圖使用我的自定義包的視圖,而不將它們添加到view.php conf文件。我創建了以下服務提供商並將其添加到app.php文件中。訪問包視圖

class FooServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     $this->loadViewsFrom(__DIR__.'/../views', 'foo'); 
    } 
    public function register() 
    { 
    } 
} 

我試圖用view('foo.test')來使用包視圖。該視圖文件位於'packages/foo/bar/views/test.blade.php'中。不過Laravel還找不到視圖文件。還有什麼我需要做的嗎?順便說一句,我不需要發佈視圖文件到resource/views文件夾。

回答

0

一旦你已經爲你正在做的,現在裝在開機的觀點:

class FooServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     $this->loadViewsFrom(__DIR__.'/../views', 'foo'); 
    } 
    public function register() 
    { 
    } 
} 

檢查從相應的文件夾服務提供商負載,因爲現在你有packages/foo/bar/views/teset.blade.php所以服務提供商需要在packages/foo/bar/providers它可以providers或任何other folder name剛纔引用的例子,請確保有關拼寫檢查,你有刀文件命名爲teset您在調用test那麼最後你可以調用控制了這一觀點是這樣的:

return ('foo::test') 

更新: 以及每個你需要在飛行中配置的變化,則要求這一點,你需要有服務提供商是這樣的:

use Illuminate\View\FileViewFinder; 
use Illuminate\View\ViewServiceProvider; 

class WebViewServiceProvider extends ViewServiceProvider 
{ 

    /** 
    * Register View Folder 
    * 
    * @return void 
    */ 
    public function registerViewFinder() 
    { 

     $this->app->bind('view.finder', function ($app) { 
      $paths = 'your view directory'; 

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

希望這有助於。

+0

感謝您的回答。 「teset」是一個有問題的類型。問題是如何添加我的包文件夾來查看文件夾。與在'config/view.php'中使用同樣的方式,沒有視圖命名空間('::') – PHPst

+0

我已經更新了答案,請檢查。 –