gpt4 book ai didi

symfony - 如何在 Symfony 2 和 Twig 中包含 CSS 文件?

转载 作者:行者123 更新时间:2023-12-03 05:37:17 25 4
gpt4 key购买 nike

我正在使用 Symfony2,我遇到了问题,包括 Twig 中的 CSSJS 文件模板。

我有一个名为 Webs/HomeBundle 的包,其中有 HomeControllerindexAction,它呈现一个 Twig 模板文件:

public function indexAction()
{
return $this->render("WebsHomeBundle:Home:index.html.twig");
}

所以这很容易。现在我想做的是在这个 Twig 模板中包含一些 CSS 和 JS 文件。模板如下所示:

<!DOCTYPE html>
<html>
<head>
{% block stylesheets %}
<link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet" />
{% endblock %}
</head>
<body>
</body>
</html>

我想要包含的文件,main.css 文件位于:

Webs/HomeController/Resources/public/css/main.css

所以我的问题基本上是,我到底如何在 Twig 模板中包含简单的 CSS 文件?

我正在使用 Twig asset() 函数,但它没有找到正确的 CSS 路径。另外,我在控制台中运行此命令:

app/console assets:install web

这创建了一个新文件夹

/web/bundles/webshome/...

这只是链接到

src/Webs/HomeController/Resources/public/

对吗?

问题

  1. 您将资源文件、JS、CSS 和图像放置在哪里?可以将它们放在 Bundle/Resources/public 文件夹中吗?这对他们来说是正确的位置吗?
  2. 如何使用 asset 功能将这些asset 文件包含在 Twig 模板中?如果它们在公共(public)文件夹中,我该如何包含它们?
  3. 我应该配置其他东西吗?

最佳答案

除了将包路径传递给 asset() 函数之外,您所做的一切都是正确的。

根据documentation - 在您的示例中,这应如下所示:

{{ asset('bundles/webshome/css/main.css') }}

提示:您还可以使用 --symlink 键调用 asset:install,这样它将在 Web 文件夹中创建符号链接(symbolic link)。当您经常应用 jscss 更改时,这非常有用(这样,应用到 src/YouBundle/Resources/public 的更改将立即反射(reflect)在 web 文件夹中,无需再次调用 assets:install):

app/console assets:install web --symlink

此外,如果您希望在子模板中添加一些资源,您可以为 Twig block 调用 parent() 方法。在你的情况下,它会是这样的:

{% block stylesheets %}
{{ parent() }}

<link href="{{ asset('bundles/webshome/css/main.css') }}" rel="stylesheet">
{% endblock %}

关于symfony - 如何在 Symfony 2 和 Twig 中包含 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com