我正在学习 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/