在 Symfony 4 / Twig 模板中包含资源(CSS、JS)

2023-12-22

我正在学习 Symfony 并尝试在 Symfony 4 中设置样板应用程序

这个 Symfony 文档 https://symfony.com/doc/current/templating.html描述如何在页面中包含资产,即使用asset包像这样..

<img src="{{ asset('images/logo.png') }}" alt="Symfony!" />

<link href="{{ asset('css/blog.css') }}" rel="stylesheet" /> 

我已经安装了这个包并尝试链接到我的/public目录。

我知道 Symfony 建议将资产放置在/assets根目录下的文件夹,但如果可能的话我想避免这种情况。对我来说,将资产放在公共目录中更有意义。

我的 Twig 基本模板如下:

<html>
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}Welcome!{% endblock %}</title>

        {% block stylesheets %}
            <link href="{{ asset('public/css/main.css') }}" rel="stylesheet" />
        {% endblock %}
    </head>
    <body>
        {% block body %}{% endblock %}
        {% block javascripts %}{% endblock %}
    </body>
    <footer>footer</footer>
</html>

Problem

当我加载路线/页面/模板时,链接的CSS将呈现为来自根的简单链接(就好像我将其链接为<link href="public/css/main.css" rel="stylesheet" />- 当然没有设置路线public/*这返回404/Not Found.

就好像asset()甚至没有使用函数。

我试过了

  • 重新启动我的本地 Symfony 服务器
  • 将资产移动到assets根目录下的文件夹相应地调整链接
  • 验证asset软件包已安装(是)
  • 谷歌搜索这个问题(Symfony 4 没有任何内容)

问题

  • 我怎样才能让 Symfony 知道public/*path 是资产的文件系统路径,而不是 URL 路由,并成功包含我的资产吗?
  • 是否有这样的功能可以为推荐以外的资产设置默认位置/assets根目录下的文件夹?

中的路径asset函数应该相对于您的公共目录,而不是项目根目录。

所以,假装你的服务器的文档根是public_html,并且资产位于public_html/css/main.css,资产调用将是{{ asset('css/main.css') }}.

附加说明: asset 函数无法让您将 asset 放在公共目录之外。他们must位于公共目录中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Symfony 4 / Twig 模板中包含资源(CSS、JS) 的相关文章

随机推荐