Saturday, October 12, 2013

Symfony 2 - Работа с ресурсами (CSS, JS, картинки)

UPDATE 3
Assetic manager очень глючно работает под виндоус. То генерирует файлы, то перестаёт это делать.


UPDATE Symfony 2.3

Добавляем ресурсы используя ассетик мэнеджер.
1. Ложим необходимые файлы в наш бандл (прим. AmAppBundle) по адресу: AmAppBundle/resources/public/css|js
2. Меняем в app/config.yml следующую строку:
assetic:
    bundles:        [ AmAppBundle ]
3. В шаблоне прописываем наши ксс/йс файлы:
        {% javascripts
            '@AMAppBundle/Resources/public/js/jquery-2.0.3.min.js'
            '@AMAppBundle/Resources/public/js/bootstrap.min.js'
        %}
            <script type="text/javascript" src="{{ asset_url }}"></script>
        {% endjavascripts %}
        {% stylesheets filter='cssrewrite'
            '@AMAppBundle/Resources/public/css/bootstrap.min.css'
            '@AMAppBundle/Resources/public/css/bootstrap-theme.min.css'
        %}
            <link rel="stylesheet" href="{{ asset_url }}" />
        {% endstylesheets %}
4. Пишем в cmd команду: php app/console assetic:dump --env=prod --no-debug (При добавлении новых файлов всегда следует применять эту команду. Как я понял, она генерит файлы для продакшена. Все скрипты генерятся в один файл (сжимаются для повышения производительности). Тоже самое проихсодит с ксс файлами.)
5. Пишем в cmd команду: php app/console cache:clear --env=prod --no-debug

У меня то работало, то не работало. Иногда всё было впорядке на деве, но продакшн отказывался генерить ксс и/или джс файлы.

Старый пост:

Ложим все необходимые ресурсы в папку бандла:
Symfony\src\bundlenamespace\bundlename\Resources\public\
 После выполяем команду, чтобы ресурсы были скопированы в директорию веб (к чему все эти трудности?) web - директория
$ php app/console assets:install web
Далее непосредственно в представлениях можно будет получить доступ к ресурсу следующим образом:
Twig:
<script src="{{ asset('bundles/bundlename/js/jquery.js') }}">

Также можно ложить фаилы в директорию Symfony/web/, откуда через команду {{ asset('file.css') }} можно получить к ним доступ.

No comments:

Post a Comment