2016-06-21 3 views
1

Я работаю над устаревшим приложением, которое мы медленно переносим на Symfony. В настоящее время Symfony2.6 (из-за версии PHP), но вскоре Symfony3.1.Изменение каталога symfony assetic

Унаследованное приложение уже использует каталоги /css/, /js/ в основном корне для управления css + js.

Проблема заключается в том, что Assetic также будет сбрасывать файлы там после компиляции css + js-файлов из пакетов. Но эти файлы генерируются и не должны заканчиваться в git, а устаревшие файлы должны управляться git.

Со временем устаревшие файлы полностью исчезнут, и все будет обработано Ассификом, но пока я должен жить с обоими работающими бок о бок.

Я хочу перенастроить Assetic для использования другого каталога при создании файлов css + js. Он также должен соответствующим образом настроить URL-адрес, используемый на веб-страницах. Предпочтительно, добавив дополнительный префикс-каталог.

До сих пор я нашел 2 вещи, которые могли бы работать:

1: использовать конфигурацию assetic расслоении write_to. Однако это, по-видимому, влияет только на команду assetic: dump и не должно использоваться для изменения выходного каталога (согласно комментариям). Это не изменяет URL-адрес, используемый для извлечения файлов браузером.

2: используйте параметр output для каждого %javascripts% итег в моих шаблонах. Хотя это, похоже, контролирует, куда идет файл, я считаю, что это нелогично, мне нужно сделать это на каждом теге. Я должен быть в состоянии настроить эту систему в целом.

Как настроить параметры Symfony и/или Assetic для изменения каталога и веб-каталога, используемого для созданных файлов css + js?

ответ

2

Вы можете использовать write to для вывода директории и определить базовый путь в ваших активах, в соответствии с конфигурацией рамочного

assetic: 
write_to: "%kernel.root_dir%/../web/foo" 

framework: 
    assets: 
    base_path: "foo" 

есть новые компоненты активов с 2,7 more info here

и вы можете позвонить

{% javascripts '@AcmeBundle/Resources/public/js/bar.js' output="js/bar.js" %} 
    <script src="{{ asset_url }}" defer></script> 
{% endjavascripts %} 

ps: поскольку symfony 2.8 assetic не входит в стандартную версию Symfony. вы можете проверить альтернативу, например gulp, для более удобного управления активами.

+0

'write_to' работает в symfony2.6, но' framework.assets.base_path', похоже, не существует в этой версии. Я попробовал 'framework.templating.assets_base_urls. [Ssl | http]' (2 ключа), но я думаю, что они используются только для активов, а не для css/js. – DoppyNL

+0

Когда я добавляю параметр 'output', он помещает файл в каталог, указанный' write_to', но это влияет только на запрашиваемое имя файла, URL-адрес, переданный в теге style, все еще не прав (и все, что находится в ' base_path' не применяется) – DoppyNL

+0

Обновленное приложение для использования параметра 'output' в * all * javascript и таблицах стилей в ветке. После перехода на Symfony2.8 или Symfony3.1 мы пересмотрим это, чтобы использовать более прочное и постоянное решение. – DoppyNL

Смежные вопросы