首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Symfony 2和Twig中包含CSS文件?

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

Stack Overflow用户
提问于 2012-08-29 02:43:04
回答 4查看 124.1K关注 0票数 67

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

我有一个名为Webs/HomeBundle的包,里面有HomeControllerindexAction,它呈现了一个细枝模板文件:

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()路径。另外,我在控制台中运行以下命令:

app/console assets:install web

这将创建一个新文件夹

/web/bundles/webshome/...

这只是链接到

src/Webs/HomeController/Resources/public/

对吗?

问题

  1. 您将资产文件、JS、CSS和图像放在哪里?可以将它们放在Bundle/Resources/public文件夹中吗?
  2. 如何使用asset函数将这些资产文件包含在您的Twig模板中?如果它们在公用文件夹中,如何包含它们?
  3. 我应该配置其他内容吗?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-29 03:10:01

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

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

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

提示:你也可以调用assets:install with --symlink key,这样它就会在web文件夹中创建符号链接。当您经常应用jscss更改时,这非常有用(这样,应用于src/YouBundle/Resources/public的更改将立即反映在web文件夹中,而无需再次调用assets:install ):

app/console assets:install web --symlink

此外,如果您希望在子模板中添加一些资产,可以为块调用parent()方法。在您的示例中,它将如下所示:

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

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

Stack Overflow用户

发布于 2013-05-31 18:08:45

您可以使用%stylesheets% (assetic feature)标记:

{% stylesheets
    "@MainBundle/Resources/public/colorbox/colorbox.css"
    "%kerner.root_dir%/Resources/css/main.css"
%}
<link type="text/css" rel="stylesheet" media="all" href="{{ asset_url }}" />
{% endstylesheets %}

您可以将路径写入css作为参数(%parameter_name%)。

有关此变体的更多信息:http://symfony.com/doc/current/cookbook/assetic/asset_management.html

票数 12
EN

Stack Overflow用户

发布于 2016-05-27 15:35:24

其他答案是有效的,但Official Symfony Best Practices指南建议使用web/文件夹来存储所有资产,而不是不同的包。

将您的web资产分散在数十个不同的捆绑包中,这使得管理它们变得更加困难。如果所有的应用程序资产都在一个位置,那么您的设计人员的工作将会轻松得多。

模板也受益于集中您的资产,因为链接更加简洁……

为了补充这一点,我建议您只将微资产放在微束中,例如,只有几行样式只需要按钮束中的一个按钮。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12165485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档