Я перенес проект на Symfony 4.1, но не изменил файловую структуру на новую структуру файлов Symfony. Мои активы, например, остаются в папке \ web. Работает нормально, кроме ассетов. Чтобы решить эту проблему, я заменил в контроллерах:
$this->container->get('templating.helper.assets')->getUrl($path);
к
$this->container->get('assets.packages')->getUrl($path);
Также выполняю следующую команду: композитору требуется symfony / asset
После этого, когда я запускаю веб-страницу, я получаю следующую ошибку:
Сервис или псевдоним «assets.packages» был удален или встроен при компиляции контейнера. Вы должны либо сделать его общедоступным, либо прекратить использование контейнера напрямую и вместо этого использовать внедрение зависимостей.
Чтобы попытаться исправить эту ошибку, я поместил ее в services.yml:
services:
assets.packages:
class: \Symfony\Component\Asset\Packages
public: true
Но после этого я получаю еще одну ошибку:
Вы хоть представляете, что это может быть? Что-то не так?
Да, yml действителен. Я получаю ошибку «Нет пакета ресурсов по умолчанию, сначала настройте его».
YML - это действительный, но с неправильным отступом. Перед assets.package должно быть 4 пробела, если вы хотите, чтобы он был дочерним по отношению к services.
Да и есть все 4 пробела! Это была просто опечатка. Есть ли способ настроить пакет по умолчанию, который я не вижу?




Assetic больше не используется, используйте Webpack Encore https://symfony.com/doc/current/frontend.html
Мне удалось исправить ошибку. Достаточно было добавить в качестве аргумента в сервис пакет по умолчанию:
assets.packages:
class: \Symfony\Component\Asset\Packages
arguments: ['@assets._default_package']
public: true
Вы можете объяснить, почему вам нужен аргумент, а не пытаться глобально добавлять новые пакеты
Ваш
services.ymlне имеет хорошего отступа, это опечатка?