Ответ 1
У вас есть 2 варианта при работе с активами. Причина, по которой вы физически не видите свои активы на своем компьютере, состоит в том, что вы выбрали вариант 1.
Вариант 1: СИМФОНИЯ МОЖЕТ ПРОЦЕССИРОВАТЬ ФАЙЛЫ, ДИНАМИЧЕСКИ ДЛЯ ВАС
Это означает, что каждый путь к ресурсам, созданный в среде dev, обрабатывается динамически с помощью Symfony. Поэтому Assetic генерирует пути к файлам CSS и JavaScript, которые физически не существуют на вашем компьютере. Это внутренний контроллер Symfony, который открывает файлы и возвращает содержимое для вас.
<сильные > Преимущества: - Изменения, внесенные в ваши активы, немедленно вступают в силу - Это отлично в режиме dev, поскольку Symfony динамически генерирует файлы для вас.
Недостатки: - Это невозможно в режиме prod, так как каждый актив динамически будет слишком медленным - Активы не будут доступны напрямую на вашем компьютере (поэтому вы не можете найти файл) - Может быть довольно медленным, если вы используете множество фильтров и т.д.
Чтобы сделать это в режиме dev, просто отредактируйте конфигурацию assetic в config_dev.yml:
assetic:
use_controller: true
Вариант 2: ФАЙЛЫ АКТИВНЫХ ПАКЕТОВ
Если вы не хотите динамически обрабатывать активы, вы можете вручную сбросить свои активы, что означает фактическое написание ваших активов физически на вашем компьютере.
<сильные > Преимущества: - Нет необходимости в Symfony генерировать файлы динамически, так что это будет работать намного быстрее - Поэтому это идеальное решение в режиме prod - Файлы физически доступны в каталоге web/(или где бы вы ни выбрали их)
Недостатки: - Вам либо нужно сбрасывать активы каждый раз, когда вы что-то меняете, либо можете сбросить активы с помощью команды -watch, которая может быть немного раздражающей, если вы работаете в режиме dev.
Для этого:
Установить use_controller в false (config_dev.yml):
assetic:
debug: %kernel.debug%
use_controller: false
Вы даже можете выбрать, где читать и выводить свои активы при необходимости
assetic:
read_from: %kernel.root_dir%/Resources/views/
write_to: %kernel.root_dir%/../web/thefolderyouwant/
Теперь выход начинается с вашей конфигурации write_to в assetic
{% stylesheets
'@FooBundle/Resources/public/css/main.css'
output='css/main.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
У вас будет ошибка ресурса, если вы продолжите, так что прокомментируйте или удалите этот сложный маршрут в config_dev.yml:
_assetic:
resource: .
type: assetic
Наконец, вы можете автоматически генерировать активы, чтобы изменения, которые вы делаете, вступили в силу:
php app/console assetic:dump --watch
В этом случае файл должен быть доступен:
/web/thefolderyouwant/css/main.css
См. Поваренную книгу для получения дополнительной информации: Как использовать Assetic для управления активами?