从Laravel 5视图访问供应商文件的简单方法是什么?

use*_*502 7 laravel laravel-5

我已经在我的Laravel 5项目中安装了bootstrap-calendar(使用bower).Bootstrap-calendar已安装到我的laravel/vendor/bootstrap-calendar /文件夹中.

要使用bootstrap-calendar,我需要在我的视图中引用CSS/JS文件,来自:

laravel/vendor/bootstrap-calendar/css
laravel/vendor/bootstrap-calendar/js
Run Code Online (Sandbox Code Playgroud)

是否有一种简单而干净的方式在我的项目中使用这些文件而无需将它们复制到公用文件夹?

cee*_*yoz 14

您可以使用Laravel Mix(在Laravel <= 5.3上称为Laravel Elixir)在您应用的资产上执行此功能和其他功能.

Laravel> = 5.4:

mix.copy('vendor/bootstrap-calendar/css', 'public/bootstrap-calendar/css');
mix.copy('vendor/bootstrap-calendar/js', 'public/bootstrap-calendar/js');
Run Code Online (Sandbox Code Playgroud)

Laravel <= 5.3:

elixir(function(mix) {
    mix.copy('vendor/bootstrap-calendar/css', 'public/bootstrap-calendar/css');
    mix.copy('vendor/bootstrap-calendar/js', 'public/bootstrap-calendar/js');
});
Run Code Online (Sandbox Code Playgroud)

  • 接受的答案只是一种解决方法.这是使用Elixir的真正解决方案. (3认同)

Bog*_*dan -1

该目录之外的文件public无法通过 HTTP 访问(因为它public是服务器的文档根)。您在这里有两个选择:

  1. 将文件复制bootstrap-calendar到您的public目录(不是最好的解决方案,因为在包的任何更新中,您都需要再次复制它们)

  2. bootstrap-calendar使用以下命令创建从供应商目录到目录的符号链接public(确保事先创建bootstrap-calendar目录public):

ln -s /path/to/laravel/vendor/bootstrap-calendar /path/to/laravel/public/bootstrap-calendar
Run Code Online (Sandbox Code Playgroud)

然后你可以将它们包含在你的视图中,如下所示:

<!-- Stylesheets -->
<link rel="stylesheet" href="{{ asset('bootstrap-calendar/css/calendar.css') }}">

<!-- Scripts -->
<script src="{{ asset('bootstrap-calendar/js/calendar.js') }}">
Run Code Online (Sandbox Code Playgroud)

  • 我不认为链接供应商下的文件应该被视为一个好的做法 (3认同)