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

标签 php css symfony twig symfony4

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

This Symfony document描述了如何在您的页面中包含 Assets ,即使用 asset像这样包装..

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

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

我已经安装了这个包并试图链接到我的 /public 中的一个 css 文件。目录。

我知道 Symfony 建议将 Assets 放在 /assets 中根文件夹,但我想尽可能避免这种情况。将 Assets 放在公共(public)目录中对我来说更有意义。

我的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>

问题

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

就好像 asset()甚至没有使用功能。

我试过了

  • 重新启动我的本地 Symfony 服务器
  • 将 Assets 移动到 assets相应地调整链接的根文件夹
  • 验证 asset包已安装(它是)
  • 用谷歌搜索这个问题(Symfony 4 没有)

问题

  • 我怎样才能让 Symfony 知道 public/*路径是 Assets 的文件系统路径,而不是 URL 路由,并成功包含我的 Assets ?
  • 除了推荐的 /assets 之外,是否有为 Assets 设置默认位置的功能?根文件夹?

最佳答案

asset 函数中的路径应该相对于您的公共(public)目录,而不是元素根目录。

因此,假设您的服务器的文档根目录是 public_html,并且 Assets 位于 public_html/css/main.css 中, Assets 调用将是 {{ asset ('css/main.css') }}.

附加说明:asset 函数无法让您将 assets 放在 public 目录之外。它们必须在公共(public)目录中。

关于php - 在 Symfony 4/Twig 模板中包含资源(CSS、JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913004/

相关文章:

php - explode 然后插入表

PHP MySQL - 在 <Select></select> 表单上显示值

css - 如何让渐变边框留在屏幕上

php - CSS 导致 SQL INSERT 执行两次

symfony - Twig:阻止解析客户端模板

php - 使用自定义查询生成器的多对多实体的 Symfony 表单

php - 显示latin1编码的MySQL表中的西里尔字符

html - 像 :active:hover. 这样组合事件和悬停伪选择器是否正确?

php - Twig 模板 - 在数组中访问数组

PHP语法。 bool 运算符、三元运算符和 JavaScript