Куда идут общие ресурсы Symfony2 CSS и JS, наилучшая практика? - PullRequest
35 голосов
/ 01 августа 2011

Обычно я размещаю свои активы 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, в app / Resources / public /...?

Ответы [ 4 ]

27 голосов
/ 11 февраля 2012

Вы также можете использовать это:

{% stylesheets '../app/Resources/public/css/*' %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
24 голосов
/ 02 августа 2011

Да, это хороший выбор, чтобы не помещать библиотеки в Bundle

см. Здесь: http://symfony.com/doc/current/cookbook/bundles/best_practices.html#vendors

В комплект не должны встраиваться сторонние библиотеки, написанные на JavaScript, CSS или любом другом языке.

<Ч />

Я предлагаю вам поставить jquery и сбросить файлы под чем-то вроде: 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 %}

Надеюсь, это сработает для вас.

РЕДАКТИРОВАТЬ : отредактированный ответ будет похож на https://stackoverflow.com/a/9237004/505836, спасибо Дэвид.

8 голосов
/ 26 ноября 2013

Мое решение почти такое же, как у Дэвида, но вместо жесткого кодирования папки app используется %kernel.root_dir% (хотя, я сомневаюсь, многие меняют имя этой папки), например:

{%- 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в любом случае.)

2 голосов
/ 31 октября 2012

Вы можете заменить ../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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...