26

我们正在使用 Symfony2 构建一个新站点,Assetic 在资源管理方面看起来非常有前途,特别是在自动组合和处理所有 js/css 文件方面。

我们将拥有一些在站点范围内使用的资源,以及一些特定于特定页面的资源。我们还将对模板使用三层继承方法。

有没有办法将这两个概念结合起来,即在继承的模板中自动添加额外的资源,以便它们都作为单个资源输出?

4

2 回答 2

23

您实际上可以执行以下操作:

在 layout.html.twig (或任何你的布局)

{% block stylesheets %}
    {% stylesheets 'your_assets_here' %}
         <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

在任何扩展该布局的模板中:

{% block stylesheets %}
    {{ parent() }}
    {% stylesheets 'additional_assets_here' %}
         <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

然后你就不需要按照 Nemanja Niljkovic 的建议重新输入所有旧资产

于 2012-07-26T22:07:20.953 回答
18

不幸的是,你不能:(

您不能覆盖资产标签来添加更多资产。但是,您可以执行以下操作:

{% block stylesheets %}
    {% stylesheets 'your_assets_here' %}
         <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

然后,当您扩展模板时:

{% block stylesheets %}
    {% stylesheets 'your_old_assets_here' 'your_new_assets_here' %}
         <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

在被覆盖的块中,您可以使用parent()包含父块,但是您将有 2 个链接:您不能将旧的资产标签与新的标签结合起来。

但是,您可以创建一个 twig 宏,该宏将使用您的旧资产输出 {% stylesheets %} 资产标签,并且作为输入,它将包含新资产位置。

更多信息在这里

于 2011-08-05T16:23:35.713 回答