Symfony 资产不包括样式表

Symfony asset not including stylesheets

我通过 composer 和 asset 组件安装了 symfony 4.1。

我在 assets/css/dashboard.css 有一个 css 文件,在我的 templates/base.html.twig 中我包含了这个:

    {% block stylesheets %}
        <link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" />
    {% endblock %}

我没有修改任何东西,但不知何故模板没有被调用。

我尝试了多种路径变体,添加斜杠、点,认为路径可能是错误的,但没有。

css 文件没有问题,我转储了它的内容并将其粘贴到我模板的 <style></style> 标签中并且它有效。

不知道怎么回事

简称:

asset() 功能点在您的 public 文件夹中。

所以在你的例子中,你的 dashboard.css 应该在 public/css/dashboard.css 中,而不是这个 <link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" /> 应该工作。

较长的解释:

通常您会在 assets 文件夹中构建脚本、样式和图像。但是在生产中你不需要好的可读性 css/less/scss/js 代码,所以你想缩小它。 缩小(丑化)代码应复制到您的 public 文件夹。

所以您想使用 Webpack Encore 压缩您的代码并 "deploy" 它到您的项目 public 文件夹。

在 symfony 中 documentation you can find a simple Example how to use Webpack Encore

为什么资产会转到 public 文件夹?

在 symfony(和大多数其他框架)的安全概念中,public 文件夹是唯一可访问的文件夹。所以浏览器必须阅读的所有内容都在那里。如果是 symfony,您的样式、脚本、图像等。