Я пытаюсь добавить зависимости Assets к TwigExtension, но в итоге получаю:
Cannot autowire service "App\Twig\AppExtension": argument "$urlPackage" of method "__construct()" references class "Symfony\Component\Asset\UrlPackage" but no such service exists.
Итак, вот что я делаю в основном:
use Symfony\Component\Asset\UrlPackage;
...
protected $urlPackage;
public function __construct(UrlPackage $urlPackage)
{
$this->urlPackage = $urlPackage;
}
....
$url = $this->urlPackage->getUrl("build/assets/images/svg/notification.svg");
И, конечно, я проверил погоду или нет, пакет существует:
/var/www/fromton # bin/console debug:container | grep assets
Symfony\Component\Asset\Packages alias for "assets.packages"
assets._default_package Symfony\Component\Asset\PathPackage
assets._version__default Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy
assets.context Symfony\Component\Asset\Context\RequestStackContext
assets.empty_package Symfony\Component\Asset\Package
assets.empty_version_strategy Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy
assets.json_manifest_version_strategy Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy
assets.packages Symfony\Component\Asset\Packages
assets.path_package Symfony\Component\Asset\PathPackage
assets.static_version_strategy Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy
assets.url_package Symfony\Component\Asset\UrlPackage
console.command.assets_install Symfony\Bundle\FrameworkBundle\Command\AssetsInstallCommand
twig.extension.assets Symfony\Bridge\Twig\Extension\AssetExtension
Что, черт возьми, не так? В services.yml тоже что-нибудь сделать?
@AlisterBulman полностью да, я отредактировал свой вопрос
Согласно stackoverflow.com/q/36163803/6216 вы можете автоматически подключить Symfony\Component\Asset\Packages и использовать на нем ->getUrl(). Это также доступно в соответствии с отладкой: автоматическое подключение,




Shall I do something in services.yml too?
Да, вам нужно определить новый псевдоним службы, завершающий автоматическое подключение на основе его FQCN:
services:
# ...
Symfony\Component\Asset\UrlPackage: '@assets.url_package'
У вас установлен пакет
symfony/asset? Помните, что в Symfony 4 очень мало того, что идет с базовым пакетом - вы добавляете его по мере необходимости.