knp-snappy-bundle имеет частный сервис

После обновления с Symfony 2.2 до Symfony 3.4 я получаю ошибку

Сервис или псевдоним knp_snappy.pdf был удален или встроен во время компиляции контейнера. Вы должны либо сделать его общедоступным, либо прекратить использование контейнера напрямую и использовать вместо него внедрение зависимостей.

config.yml

knp_snappy:
  pdf:
    enabled: true
    binary:  '%knp_snappy_pdf_binary%'
    options: []

в действии контроллера:

$html = $this->renderView(
    'FsaBundle:Registration:registrationEmail.html.twig', ['data' => $data]
);

$pdf = $this->get('knp_snappy.pdf')->getOutputFromHtml($html);
...

Как сделать knp_snappy.pdf общественности?

1 ответ

Решение

Обновить KnpSnappyBundle до 1.5.2: они сделали это для вас. Если вы переопределяете сервис (который должен быть бесполезным), поставьте public: true в определении.

Кроме того, поставить ^1.5 как версия в composer.json чтобы получить все совместимые обновления (< 2) этого пакета (и я бы рекомендовал делать это для каждого стороннего кода, который следует за семантическим версионированием) во время composer update

Если вы хотите узнать больше о композиторе и его ограничениях, ознакомьтесь с ^ (каретная) документация.

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