Подтвердить что ты не робот

Где 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/...?

4b9b3361

Ответ 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.