Объединение ассемблерных ресурсов через наследуемые шаблоны
Мы создаем новый сайт с использованием Symfony2, а Assetic выглядит очень перспективно для управления ресурсами, в частности для объединения и обработки всех файлов js/css вместе.
У нас есть некоторые ресурсы, которые используются на сайте в целом, и некоторые, которые относятся к конкретным страницам. Мы также будем использовать трехуровневый унаследованный подход к шаблонам.
Есть ли способ объединить два понятия, то есть автоматически добавлять дополнительные ресурсы в наследуемые шаблоны, чтобы все они были представлены как один ресурс?
Ответы
Ответ 1
К сожалению, вы не можете: (
Вы не можете переопределить теги атлетов, чтобы добавить больше активов. Однако вы можете сделать следующее:
{% 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%} с вашими старыми активами, а в качестве ввода он будет содержать новые местоположения активов.
Подробнее здесь.
Ответ 2
На самом деле вы можете сделать следующее:
В 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 %}
Тогда вам не нужно будет перепечатывать все старые активы, как предложил Неманья Нилкович