我們正在使用Symfony2構建新網站,而資產看起來非常有希望用於資源管理,特別是用於自動組合和處理所有js/css文件。跨繼承模板組合資產資源
我們將有一些資源用於站點範圍,有些是特定於特定頁面的資源。我們也將對模板使用三層繼承的方法。
有沒有辦法將這兩個概念結合起來,即在繼承的模板中自動添加額外的資源,以便它們都作爲單個資源輸出?
我們正在使用Symfony2構建新網站,而資產看起來非常有希望用於資源管理,特別是用於自動組合和處理所有js/css文件。跨繼承模板組合資產資源
我們將有一些資源用於站點範圍,有些是特定於特定頁面的資源。我們也將對模板使用三層繼承的方法。
有沒有辦法將這兩個概念結合起來,即在繼承的模板中自動添加額外的資源,以便它們都作爲單個資源輸出?
不幸的是,你不能:(
您不能覆蓋assetic標籤添加更多的資產但是,您可以執行以下操作:
{% 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個鏈接,則:你不能老assetic標籤與結合 新的那一個。
然而,您可以製作一個樹枝宏,它將輸出{%stylesheets%}資產標籤和舊資產,並將其作爲輸入包含新的資產位置。
更多信息here。
實際上,你可以做到以下幾點:
在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所建議的那樣重新鍵入所有舊資產
是的,但(引自Nemana Niljkovic的答案):「但是你會有2個鏈接,因爲你不能將舊的資產標籤和新的標籤結合起來」 –
將新文件合併到一起沒什麼意義這是來自父級的一組樣式表/腳本,因爲那樣會破壞緩存的目的,因爲您可能擁有許多這樣的頁面以及它們自己的一組附加文件......將它們組合起來將意味着爲每個頁面組合一組新文件* !告訴瀏覽器緩存再見。因此,對於具有自己額外文件的頁面的頁面,單獨設置一組組合文件實際上會更好,因此至少更通用的一組樣式表/腳本將始終被緩存 – Populus
Drat,I儘可能多懷疑。感謝指向樹枝宏的指針。 –
不是資產首先運行嗎? –
我認爲這是一種正確的行爲:將必須在單個頁面/路線上的資產組合起來,我認爲它不會很聰明。這正是我期望的行爲。所以,感謝您解決如何只爲一條路線插入文件的解決方案! :) – Aerendir