我正在学习Symfony并尝试在Symfony 4中设置样板应用程序
This Symfony document介绍了如何在页面中包含资源,即使用asset
这样的包。
<img src="{{ asset('images/logo.png') }}" alt="Symfony!" />
<link href="{{ asset('css/blog.css') }}" rel="stylesheet" />
我已安装此软件包并尝试链接到/public
目录中的css文件。
我知道Symfony建议将资源放在根目录的/assets
文件夹中,但我想尽可能避免这种情况。将资产放在公共目录中对我来说更有意义。
My 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" />
- 当然没有{{1}的路由集这将返回public/*
。
好像甚至没有使用404/Not Found
函数。
我已尝试过
asset()
文件夹,相应地调整链接assets
软件包已安装(它是)问题
asset
路径是资产的文件系统路径,而不是URL路由,并成功包含我的资产? public/*
文件夹以外的资产设置默认位置?答案 0 :(得分:10)
asset
函数中的路径应该与您的公共目录相关,而不是项目根目录。
因此,假装您的服务器的docroot为public_html
,资产位于public_html/css/main.css
,资产调用将为{{ asset('css/main.css') }}
。
附加说明:资产功能不允许您将资产放在公共目录之外。他们必须在公共目录中。
答案 1 :(得分:2)
首先,也许您必须将资产功能添加到Symfony:
composer require symfony/asset
然后,您应该在Twig中使用它来确定公共目录的相对路径:
<link href="{{ asset('css/style.css') }}" rel="stylesheet" />
public/css/style.css
样式文件。
顺便说一句,它也适用于Symfony 5。
答案 2 :(得分:0)
检查webpack是否正在监视文件...(监视纱线)经过数小时的搜索答案后,我的一个项目团队成员询问我是否正在运行==之后立即工作。