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,您的样式、脚本、图像等。
我通过 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,您的样式、脚本、图像等。