在继承的模板中组合资产资源

时间:2011-08-05 15:42:23

标签: templates resources symfony twig assetic

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

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

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

2 个答案:

答案 0 :(得分: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的建议重新输入所有旧资产

答案 1 :(得分: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个链接:您不能将旧的资产标记与新的标记组合。

然而,你可以制作一个枝条宏,用你的旧资产输出{%stylesheets%}资产标签,作为输入,它将包含新的资产位置。

更多信息here