команда assets:dump не сбрасывает изображения

Насколько я знаю, команда php app/console assetic:dump должна взять все из app/Resources/public, обработать при необходимости (скажем, файл Sass -> файл CSS) и сбросить в папку web/. Когда я запускаю команду, мои файлы javascript и файлы css передаются правильно, однако мои изображения - нет. Они вообще не переводятся на web/. Как я могу получить изображения для переноса из моего непубличного каталога в общедоступный на assets:dump?

Моя файловая структура:

+-symfony/
  +-app/
    +-Resources/
      +-public/
        +-css/
          //All of my CSS files
        +-javascripts/
          //All of my JS files
        +-images/
          //All of my image assets

Мой файл макета выглядит так:

{% stylesheets
  'css/bootstrap_loader.css.scss'
  'css/bootstrapValidator.min.css'
  'css/style.css.scss'
  'css/learners.css'
  'css/stately/*'
  filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

{% javascripts
  'js/jquery-1.11.2.min.js'
  '@bootstrap_js'
  'js/landing_page.js'
  'js/homepage_video.js'
  '//use.typekit.net/rah2apm.js'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}  

person Patrick    schedule 25.02.2015    source источник


Ответы (1)


Ты неправ. Assetic не то же самое, что assets.

Assetic — это библиотека, которая может скомпилировать ваш JS или CSS с некоторыми фильтрами.

Активы — это ваши ресурсы.

Попробуйте запустить:

php app/console assets:install --symlink

Он создаст папку символической ссылки внутри каталога web/, которая будет указывать на папку Resources/public вашего пакета.

Если вы опустите опцию --symlink, все ваши активы будут скопированы один раз, и вам нужно будет запускать эту команду каждый раз, когда вы меняете свои активы.

person Michael Sivolobov    schedule 25.02.2015
comment
Спасибо за ваш ответ, но я запустил эту команду, и результат был таким: Installing assets using the symlink option Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution Похоже, она пропустила мои активы, которые хранятся в %kernel.root_dir%/Resources/public/images. Мои активы не хранятся в отдельном пакете, а только в AppBundle по умолчанию, с которым Symfony поставляется. - person Patrick; 25.02.2015
comment
Извиняюсь. Я не заметил вашей структуры каталогов. Если вы используете этот способ для хранения ресурсов (глобальных для всего приложения), вы должны хранить их в каталоге web/. - person Michael Sivolobov; 25.02.2015
comment
Итак, чтобы я был абсолютно уверен, я должен просто поместить изображения прямо в каталог web/? Предотвратит ли это очистку кеша изображений? - person Patrick; 25.02.2015
comment
О каком сбросе кеша вы говорите? - person Michael Sivolobov; 25.02.2015
comment
Когда я запускаю assetic:dump, Assetic берет мои файлы css/js, обрабатывает их и меняет их имена. Например, style.css будет обработано и помещено в web/ с новым именем 1e61613.css. Это полезно для удаления из кеша старых версий файла, которые могут кэшироваться в браузере. Предположительно, если я прогоню изображения через Assetic, я смогу применить функцию очистки кеша к своим изображениям, поэтому, если я изменю изображение, но оставлю то же имя файла, например masthead-4.jpg, я буду знать, что новое изображение отображается, потому что у assets будет изменил имя на уникальное значение. - person Patrick; 25.02.2015
comment
Я просто думаю, что было бы полезно применить эту функцию к изображениям, а также к активам css/js. Если это не то, как Symfony должен работать, то я могу жить с размещением изображений в web/ - person Patrick; 25.02.2015
comment
Ваши файлы css и js будут иметь одно и то же имя после обновления. Вам нужно настроить версию для них вручную. И изображения будут обрабатываться только в том случае, если у вас есть какой-то активный фильтр для их обработки. В вашем случае вы должны поместить свои изображения в каталог web/ и управлять ими вручную. - person Michael Sivolobov; 25.02.2015