Внедрение зависимостей не удается для стороннего пакета - PullRequest
0 голосов
/ 16 апреля 2019

Когда я запускаю следующий код (стандартное внедрение зависимостей):

use Khill\Lavacharts\Lavacharts;

class MainController extends AbstractController {

  protected $lavacharts;

  function __construct(Lavacharts $lavacharts) {
    $this->lavacharts = $lavacharts;
  }

Я получаю ошибку:

Cannot autowire service "DefaultController": 
argument "$lavacharts" of method "MainController::__construct()" 
references class "Khill\Lavacharts\Lavacharts" but no such 
service exists. You should maybe alias this class to the 
existing "lavacharts" service

Итак, я добавил псевдоним для службы lavachart в моем services.yml, который является пакетом поставщика, например:

Khill\Lavacharts\Lavacharts\: "@lavacharts"

Вот как поставщик lavacharts определяет поставщика:

parameters:
    khill.lavacharts.class: Khill\Lavacharts\Lavacharts
    khill.lavacharts.twig: Khill\Lavacharts\Symfony\Bundle\Twig\LavachartsExtension

services:
    lavacharts:
        class: "%khill.lavacharts.class%"

    lavacharts.twig_extension:
        class: "%khill.lavacharts.twig%"
        public: false
        arguments: ['@lavacharts']
        tags:
            - { name: twig.extension }

Но это не работает, и я продолжаю получать ту же ошибку, хотя у меня есть ощущение, что я создал ожидаемый псевдоним (на основе официальной документации ). Чего мне не хватает?

1 Ответ

0 голосов
/ 17 апреля 2019

Ах! ОК, я нашел это сам.

В декларации сервиса конечный слеш должен быть опущен (я пока не понял, почему именно):

Khill\Lavacharts\Lavacharts: "@lavacharts"

и НЕ

Khill\Lavacharts\Lavacharts\: "@lavacharts"

(обратите внимание на обратную косую черту)

...