我通过作曲家和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>
标记内,并且可以正常工作。
我不知道发生了什么
答案 0 :(得分:5)
简而言之:
asset()
功能指向您的公用文件夹。
因此,在您的示例中,您的dashboard.css
应该位于public/css/dashboard.css
中,而不是这个<link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" />
应该起作用。
更长的解释:
通常,您将在assets
文件夹中构建脚本,样式和图像。但是在生产中,您不需要良好的可读css / less / scss / js代码,因此希望将其最小化。
缩小后的代码应复制到您的public
文件夹中。
因此,您想使用Webpack Encore
来最小化代码并将其“部署”到项目public
文件夹中。
在symfony的documentation中,您可以找到simple Example的使用方法Webpack Encore。
为什么资产要转到公用文件夹?
在symfony(和大多数其他框架)的安全概念期间,public
文件夹是唯一可访问的文件夹。因此,浏览器必须阅读的所有内容均已保存。如果是symfony,您的样式,脚本,图像等。