首页 > 解决方案 > 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>标签中,它可以工作。

我不知道发生了什么事

标签: phpsymfonytwigsymfony4

解决方案


简而言之:

公共文件夹上的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 的情况下,您的样式、脚本、图像等。


推荐阅读