【问题标题】:Loading assets when creating Laravel 5 packages创建 Laravel 5 包时加载资源
【发布时间】:2015-11-30 22:46:24
【问题描述】:

在创建 Laravel 5 包时,如何加载 CSS/JS 文件等资产?我的工作包目前有控制器和视图,但是所有的 CSS 都放在每个视图的标题中,这不好。

编辑:感谢您的回答,但也许我并不太清楚。我的问题是关于 Laravel 包而不是 Laravel 应用程序。在这种情况下,我使用服务提供者加载视图

// Views
$this->loadViewsFrom(__DIR__ . '/Views', 'packagename');

以上行放在register()方法中。

【问题讨论】:

  • 如何发布视图?对 css/js 做同样的事情,将它们发布到“public/”文件夹(最好是public/vendor/packagename/assets/js/

标签: php laravel


【解决方案1】:

来自关于发布包资产的文档:https://laravel.com/docs/5.4/packages#public-assets

公共资产 您的包可能包含 JavaScript、CSS 和图像等资产。要将这些资产发布到应用程序的公共目录,请使用服务提供者的发布方法。在本例中,我们还将添加一个公共资产组标签,可用于发布相关资产组:

/**
 * Perform post-registration booting of services.
 *
 * @return void
 */
public function boot()
{
    $this->publishes([
        __DIR__.'/path/to/assets' => public_path('vendor/courier'),
    ], 'public');
}

现在,当您的包的用户执行 vendor:publish 命令时,您的资产将被复制到指定的发布位置。由于您通常需要在每次更新包时覆盖资产,您可以使用 --force 标志:

php artisan vendor:publish --tag=public --force

【讨论】:

    【解决方案2】:

    根据docs

    public 目录包含前端控制器和您的资产(图像、JavaScript、CSS 等)。

    我平时的结构如下:

    /public
        /css
        /js
        index.php
    

    然后,您可以轻松地在刀片模板中添加这些资产,例如:

    <link rel="stylesheet" href="css/main.css">
    

    最近我发现在某些情况下这会导致 404。为确保始终加载资源,您可以使用:

    <link rel="stylesheet" href="{{ asset('css/main.css') }}" >
    

    这方面的文档可以在here找到,关于这个问题你可以参考this previously answered question

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多