Я использую Symfony2, с Assetic и Twig. У меня есть различные библиотеки интерфейса - Backbone, jQuery, jQuery UI и Bootstrap. Оба Bootstrap и jQuery UI включают CSS и JS-файлы.С Assetic/Twig/Symfony2, могу ли я определить библиотеки переднего плана?
Есть ли способ определить ресурсы, которые им необходимо включить (включая зависимости), а затем в Twig/Assetic включить все эти ресурсы в один тег? То, что я хотел бы посмотреть, чтобы не что-то вроде:
// config.yml <!-- DOES NOT WORK -->
assetic:
resources:
jquery:
js: /filepath/to/jquery.js
jquery_ui:
dependencies: jquery
css: /filepath/to/jqueryui.css
js: /filepath/to/jqueryui.js
less:
js: /filepath/to/less.js
bootstrap:
dependencies: { less, jquery }
js: /filepath/to/bootstrap.js
css: /filepath/to/bootstrap.css
backbone:
dependencies: { jquery }
js: { /filepath/to/underscore.js, /filepath/to/backbone.js }
// view.html.twig
{% use jquery_ui %}
{% use bootstrap %}
// outputs all js and css for jQuery, jQueryUI, Less, Backbone, and Bootstrap
Я нашел несколько взаимосвязанных вопросов:
- How to define Assetic resources in Symfony 2 yml or xml configuration file?
- Symfony2 Assetic + Twig Template JavaScript Inheritance
, но ни, кажется, вовлекает Определяя ресурсов в config.yml. Вместо этого они определяют их в base.html.twig
, но этого я и стараюсь избегать.
Я попытался с помощью use
тег в Twig, определяя шаблон под названием «jquery_ui» и используя {% stylesheets %}
и {% javascripts %}
в этом блоке, а затем в base.html.twig
положить {% use "jquery-ui.html" %}
. Однако use
не будет импортировать шаблон, потому что он имеет тело.
Я рекомендую использовать 'package.json' в корне проекта и вести заметки о том, как перестроить рабочее пространство в файлах в корне проекта. Иногда я также добавляю скрипты в каталог 'app /'. – renoirb
Как я могу использовать package.json для этого? –
Это выглядит блестящим. Однако у меня есть вопрос о том, что происходит, когда вы расширяете шаблон '{% block javascripts%}'. Предположительно вам нужно использовать '{{parent()}}' placeholder в дочернем элементе.Было бы лучше определить тег '{% javascripts%}' вне '{% block javascripts%}', чтобы избежать необходимости вводить его каждый раз? Может ли дочерний шаблон также включать тег '{% javascripts%}? Является ли Assetic еще достаточно умным, чтобы скомпилировать только один файл css/js? Или он скомпилирует его для «глобального» сайта, а другой для расширяющегося пакета? – cartbeforehorse