Как внедрить зависимости в расширение Twig в SF4

Я пытаюсь добавить зависимости 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 тоже что-нибудь сделать?

У вас установлен пакет symfony/asset? Помните, что в Symfony 4 очень мало того, что идет с базовым пакетом - вы добавляете его по мере необходимости.

Alister Bulman 22.10.2018 23:26

@AlisterBulman полностью да, я отредактировал свой вопрос

Baldráni 22.10.2018 23:45

Согласно stackoverflow.com/q/36163803/6216 вы можете автоматически подключить Symfony\Component\Asset\Packages и использовать на нем ->getUrl(). Это также доступно в соответствии с отладкой: автоматическое подключение,

Alister Bulman 22.10.2018 23:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
3
653
1

Ответы 1

Shall I do something in services.yml too?

Да, вам нужно определить новый псевдоним службы, завершающий автоматическое подключение на основе его FQCN:

services:
    # ...

    Symfony\Component\Asset\UrlPackage: '@assets.url_package'

Другие вопросы по теме