Symfony资产不包括样式表

时间:2018-08-02 14:21:24

标签: php symfony twig symfony4

我通过作曲家和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>标记内,并且可以正常工作。

我不知道发生了什么

1 个答案:

答案 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,您的样式,脚本,图像等。