我正在使用Symfony2,我遇到了一些问题,包括CSS和JS文件在Symfony2模板中。
我有一个名为Webs/HomeBundle
的包,里面有HomeController
和indexAction
,它呈现了一个细枝模板文件:
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/
对吗?
问题
Bundle/Resources/public
文件夹中吗?发布于 2012-08-29 03:10:01
除了将包路径传递给asset()
函数之外,您做的所有事情都是正确的。
根据documentation -在您的示例中,这应该如下所示:
{{ asset('bundles/webshome/css/main.css') }}
提示:你也可以调用assets:install with --symlink
key,这样它就会在web文件夹中创建符号链接。当您经常应用js
或css
更改时,这非常有用(这样,应用于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 %}
发布于 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
发布于 2016-05-27 15:35:24
其他答案是有效的,但Official Symfony Best Practices指南建议使用web/
文件夹来存储所有资产,而不是不同的包。
将您的web资产分散在数十个不同的捆绑包中,这使得管理它们变得更加困难。如果所有的应用程序资产都在一个位置,那么您的设计人员的工作将会轻松得多。
模板也受益于集中您的资产,因为链接更加简洁……
为了补充这一点,我建议您只将微资产放在微束中,例如,只有几行样式只需要按钮束中的一个按钮。
https://stackoverflow.com/questions/12165485
复制相似问题