2017-08-31 114 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

我已经更新了答案,请检查。 –