我在玩Symfony2,我有问题包括CSS和JS文件在Twig模板。
我有一个名为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>
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/
对?
问题
>在哪里放置您的资产文件,JS,CSS和图像?是否可以将它们放在Bundle / Resources / public文件夹中?这是他们的正确位置吗?
>如何使用资产函数将这些资产文件包含在您的Twig模板中?如果他们在公共文件夹,我如何包括他们?
>我应该配置别的东西吗?
解决方法
你正在做的一切正常,除了传递你的bundle路径到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
此外,如果您希望在子模板中添加一些资源,可以为Twig块调用parent()方法。在你的情况下会是这样:
{% block stylesheets %} {{ parent() }} <link href="{{ asset('bundles/webshome/css/main.css') }}" rel="stylesheet"> {% endblock %}