web-dev-qa-db-ja.com

継承されたテンプレート間で資産リソースを組み合わせる

Symfony2を使用して新しいサイトを構築しており、Asseticはリソース管理、特にすべてのjs/cssファイルを自動的に結合して処理するために非常に有望に見えます。

サイト全体で使用されるリソースと、特定のページに固有のリソースがあります。また、テンプレートに対して3層の継承されたアプローチを使用します。

2つの概念を組み合わせる方法はありますか?つまり、継承されたテンプレートにリソースを自動的に追加して、すべてが単一のリソースとして出力されるようにする方法はありますか?

26
Ken Cooper

残念ながら、できません:(

アセットタグをオーバーライドしてアセットを追加することはできません。ただし、次のことができます。

_{% 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%}アセットタグを出力するtwigマクロを作成し、入力として新しいアセットの場所を含めることはできます。

詳細 ここ

18

実際には次のことができます。

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が提案したように、古いアセットをすべて再入力する必要はありません。

23
Populus