Где Symfony2 поделился CSS и JS активами, передовой опыт мудрый?
Я обычно размещаю свои активы JS и CSS Assetic внутри DefaultBundle, но я полагаю, что лучшее место для их размещения было бы в папках app/Resources/public/(js | css).
Кроме того, для ссылки на активы мы используем:
{% javascripts filter="" output="js/core.js" debug=true
"@DefaultBundle/Resources/public/js/jquery-1.6.2.js" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
Как мне обратиться к общим ресурсам, таким как jQuery и мои стили CSS reset в приложении/Resources/public/...?
Ответы
Ответ 1
Да, это хороший выбор, чтобы не помещать библиотеки внутри пакета
см. здесь: http://symfony.com/doc/current/cookbook/bundles/best_practices.html#vendors
Пакет не должен вставлять сторонние библиотеки, написанные на JavaScript, CSS или на любой другой язык.
Что я предлагаю вам, это поставить файлы jquery и reset под что-то вроде: app/Resources/public/js/jquery.min.js
и изменить код следующим образом:
{% javascripts filter="" output="js/core.js" debug=true
"../app/Resources/public/js/jquery-1.6.2.js" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
Я надеюсь, что это сработает для вас.
EDIT. Отредактированный ответ будет похож на fooobar.com/questions/158985/..., благодаря Дэвиду.
Ответ 2
Вы также можете использовать это:
{% stylesheets '../app/Resources/public/css/*' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
Ответ 3
Мое решение почти такое же, как у Дэвида, но с использованием %kernel.root_dir%
вместо жесткого кодирования папки app
(хотя я сомневаюсь, что многие меняют это имя папки), например:
{%- javascripts output='compiled/main.js'
'%kernel.root_dir%/Resources/public/js/jquery-1.10.2.min.js'
'%kernel.root_dir%/Resources/public/js/underscore-1.5.2.min.js'
'@MyOwnBundle/Resources/public/js/default.js'
-%}
<script src='{{ asset_url }}'></script>
{%- endjavascripts %}
Если сторонние библиотеки ссылаются на свои собственные ресурсы (например, обычно изображения в подпапке img
, на которые ссылаются файлы .css), обычно это достаточно для создания соответствующих символических ссылок на сервере, например. ln -s .../app/Resources/public/img .../web/img
или что-то подобное. Или, конечно, используйте фильтр cssrewrite, но остерегайтесь его оговорок.
(Также обратите внимание, что я не использую атрибут type="<mime-type>"
, так как тип содержимого файлов в любом случае предоставляется в заголовках HTTP.)
Ответ 4
Вы можете заменить ../app/Resources/public/css/
на public/css/
. То же самое для папки Javascript.
{% stylesheets filter='less' output='css/core' 'public/css/*' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% javascripts "public/js/*" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
Здесь автоматически загружаются все файлы папки /web/public
.