2017-05-10 49 views
0

我使用Laravel 5.4创建了一个包。我需要在刀片模板中包含一些资源(js,CSS &图像)。我怎样才能做到这一点?将资产包含到包的刀片视图中 - Laravel

我试过资产(),但它不工作。

这里是我包的文件夹结构:

root 
    --package 
    -- vendor_name 
     -- package_name 
      -- src 
       -- assets 
       -- js 
        -- login.js 
       --css 
        -- login.css 
       -- views 
       -- login.blade.php 

有什么事情可以不公布他们进入公共文件夹?

感谢

+0

'asset()'提供了一个路径到您的laravel项目的公共目录。您的文件似乎在供应商目录中。是对的吗? –

+0

这是不可能的,你的方式。浏览器将尝试使用HTTP请求加载CSS引用和Javascript源,并且唯一打开Laravel的HTTP请求的文件夹是公用文件夹。正如你在谈论一个软件包,许多安装遵循良好的做法,你必须将它们移动到公共文件夹,正如答案已经表明的那样。 –

回答

1

在Laravel 5.4,你可以用混合功能是好多了,如果你想使用

<script src="{{ mix('js/login.js') }}"></script> 

见编译资产(Laravel混合)

https://laravel.com/docs/5.4/mix

mix.js(['resources/assets/js/app.js'], 'public/js') 
     .sass('resources/assets/sass/app.scss', 'public/css') 
     .styles([ 
      'node_modules/animate.css/animate.css', 
      'node_modules/icheck/skins/flat/green.css', 
      'node_modules/flatpickr/dist/flatpickr.css', 
      'node_modules/gentelella/vendors/switchery/dist/switchery.min.css', 
      'node_modules/ion-rangeslider/css/ion.rangeSlider.css', 
      'node_modules/ion-rangeslider/css/ion.rangeSlider.skinFlat.css', 
      'node_modules/gentelella/vendors/google-code-prettify/bin/prettify.min.css', 
      //bootstrap modal carousel.js 
      //'node_module/bootstrap-modal-carousel/dist/css/bootstrap-modal-carousel.css', 
      'node_modules/gentelella/build/css/custom.css', 
      'resources/assets/css/custom.css' 
     ], 'public/css/custom.css') 
     .copy('node_modules/gentelella/vendors/switchery/dist/switchery.min.js', 'public/js/switchery.min.js') 
     .copy('node_modules/gentelella/vendors/switchery/dist/switchery.min.css', 'public/css/switchery.min.css') 
     .copy('resources/assets/images', 'public/images') 
     .copy('node_modules/ion-rangeslider/img', 'public/img') 
     .copy('node_modules/icheck/skins/flat/green.png', 'public/css') 
     .copy('node_modules/icheck/skins/flat/[email protected]', 'public/css').version(); 
版本
+0

看起来像你没有得到我的问题。 –

+0

不,你可以把你需要的东西放在webpack.mix.js然后编译它,我理解你,但我的意思是这样更好。看看更新的代码 –

0

您可以在您的中创建一个新磁盘指向该文件夹。

'package' => [ 
      'driver' => 'package', 
      'root' => base_path('package'), 
     ], 

刀片

{{ Storage::disk('package')->url('vendor_name/package_name/src/assets/js/login.js') }}

自定义目录的意见

编辑这个你必须去在config/view.php并添加你的路base_path('package/vendor_name/package_name/src/views')为每个包。

'paths' => [ 
     resource_path('views'), 
     base_path('package/vendor_name/package_name/src/views'), 
    ],