php - Symfony 资产不包括样式表
问题描述
asset
我通过作曲家和组件安装了 symfony 4.1 。
我有一个 css 文件,assets/css/dashboard.css
我在templates/base.html.twig
其中包含了这个:
{% block stylesheets %}
<link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" />
{% endblock %}
我没有修改任何东西,但不知何故模板没有被调用。
我尝试了许多路径的变体,添加了斜线、点,认为路径可能是错误的,但什么也没有。
css 文件没有问题,我转储了它的内容并将其粘贴到我的模板<style></style>
标签中,它可以工作。
我不知道发生了什么事
解决方案
简而言之:
公共文件夹上的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的文档中,您可以找到一个如何使用Webpack Encore的简单示例。
为什么资产会进入公用文件夹?
在 symfony(和大多数其他框架)的安全概念中,public
文件夹是唯一可访问的文件夹。所以浏览器必须读取的所有内容都在那里。在 symfony 的情况下,您的样式、脚本、图像等。
推荐阅读
- c++ - 使用正则表达式将包含通配符“*”的字符串与一组字符串进行比较
- git - 在 gitkraken 中恢复提交是什么意思?
- ios - 如何在 UITest 下的 textView 中将光标放在我想要的位置?
- octave - 从文件加载字符串数组
- .net - 在变量中调用具有此名称的表单
- json - 快速解析时无法在json post请求参数中添加文本字段输入的文本
- scripting - Dymola mos 脚本:获取当前目录
- javascript - 如何解决父效应子事件的防止事件
- javascript - beforeEach fetch() - 将 res 传递给 'it' 函数
- angular - 使用 Puppeteer SSR for Angular 时闪烁