Объединение ресурсов Assetic через унаследованные шаблоны - PullRequest
26 голосов
/ 05 августа 2011

Мы создаем новый сайт с использованием Symfony2, и Assetic выглядит очень перспективным для управления ресурсами, в частности для автоматического объединения и обработки всех файлов js / css.

У нас будут некоторые ресурсы, которые используются по всему сайту, и некоторые, которые относятся к конкретным страницам. Мы также будем использовать трехуровневый унаследованный подход к шаблонам.

Есть ли способ объединить две концепции, то есть автоматически добавить дополнительные ресурсы в унаследованные шаблоны, чтобы они все выводились как один ресурс?

Ответы [ 2 ]

23 голосов
/ 27 июля 2012

На самом деле вы можете сделать следующее:

В 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 %}

Тогда вам не нужно будет перепечатывать все старые активы, как предлагает Неманья Нилькович

18 голосов
/ 05 августа 2011

К сожалению, вы не можете: (

Вы не можете переопределить метки сборки, чтобы добавить больше ресурсов. Однако вы можете сделать следующее:

{% 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%} с вашими старыми активами, и в качестве входных данных он будет содержать новые местоположения активов.

Подробнее здесь .

...