Symfony资产不包括样式表

hid*_*dar 1 php symfony twig symfony4

我通过composer和asset组件安装了symfony 4.1 .

我有一个css文件,assets/css/dashboard.css在我的templates/base.html.twigI中包括:

    {% block stylesheets %}
        <link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" />
    {% endblock %}
Run Code Online (Sandbox Code Playgroud)

我没有修改任何东西,但不知何故模板没有被调用.

我尝试了路径的许多变化,添加斜线,点思考可能路径错误但没有.

css文件没有问题,我把它的内容丢弃并粘贴在我的模板的<style></style>标签中,它可以工作.

我不知道发生了什么事

bur*_*ire 5

简而言之:

asset()功能指向您的公用文件夹.

所以在你的例子中,你dashboard.css应该在public/css/dashboard.css<link href="{{ asset('css/dashboard.css') }}" rel="stylesheet" />应该工作.

更长的解释:

通常,您将在assets文件夹中构建脚本,样式和图像.但是在生产中你不需要良好的可读css/less/scss/js代码,所以你想要缩小它.并且应将缩小的(uglified)代码复制到您的public文件夹中.

因此,您希望使用Webpack Encore缩小代码并将其"部署"到项目public文件夹中.

在symfony的文档中,您可以找到一个简单的示例如何使用Webpack Encore.

为什么资产要进入公用文件夹?

在symfony(以及大多数其他框架)的安全概念期间,该public文件夹是唯一可访问的文件夹.所以浏览器必须阅读的所有内容都在那里.在symfony的情况下你的样式,脚本,图像等.