ошибка sonata/twig после обновления Symfony с 2.6 до 3.4

я обновляю проект с sf2.6 (php5.6) на sf3.4 (php7.1)... все идет хорошо, но теперь я застрял с ошибкой, я не могу понять, как это исправить

вывод ошибки: PHP message: PHP Fatal error: Uncaught Symfony\\Component\\Debug\\Exception\\FatalThrowableError: Type error: Argument 2 passed to Sonata\\FormatterBundle\\Formatter\\Pool::add() must implement interface Sonata\\FormatterBundle\\Formatter\\FormatterInterface, boolean given, called in /var/www/var/cache/dev/ContainerMklcxqq/appDevDebugProjectContainer.php on line 4924 in /var/www/vendor/sonata-project/formatter-bundle/src/Formatter/Pool.php:43\nStack trace:\n#0 /var/www/var/cache/dev/ContainerMklcxqq/appDevDebugProjectContainer.php(4924): Sonata\\FormatterBundle\\Formatter\\Pool->add('twig', true, NULL)\n#1 /var/www/var/cache/dev/ContainerMklcxqq/appDevDebugProjectContainer.php(3475): ContainerMklcxqq\\appDevDebugProjectContainer->getSonata_Formatter_PoolService()\n#2 /var/www/var/cache/dev/ContainerMklcxqq/getAssetic_AssetManagerService.php(8): ContainerMklcxqq\\appDevDebugProjectContainer->getTwigService()\n#3 /var/www/var/cache/dev/ContainerMklcxqq/appDevDebugProjectContainer.php(1349): require('/var/www/var/ca...')\n#4 /v...\n'

если я проверю указанную строку (4924) в контейнере, я найду:

$instance->add('twig', ${($_ = isset($this- >services['sonata.formatter.text.twigengine']) ? $this- 
>services['sonata.formatter.text.twigengine'] : $this- 
>getSonata_Formatter_Text_TwigengineService()) && false ?: '_'}, NULL);

когда я проверяю фактическую службу с помощью «bin/console debug:container sonata.formatter.text.twigengine», я получаю следующее, что, я думаю, хорошо:

Information for Service "sonata.formatter.text.twigengine"
==========================================================

 ---------------- ------------------------------------------------
  Option           Value
 ---------------- ------------------------------------------------
  Service ID       sonata.formatter.text.twigengine
  Class            Sonata\FormatterBundle\Formatter\TwigFormatter
  Tags             sonata.text.formatter
  Public           no
  Synthetic        no
  Lazy             no
  Shared           yes
  Abstract         no
  Autowired        no
  Autoconfigured   no
 ---------------- ------------------------------------------------

и, наконец, я проверил фактический класс TwigFormatter, который ведет к этому сообщению:

final class TwigFormatter implements FormatterInterface

как возможна эта ошибка, и я должен это исправить или требуется какое-либо обновление пакета? я использую новейшую версию пакета sonata-project/formatter-bundle, а также новейшую версию twig/twig.

помощь и объяснение очень ценятся. Спасибо, парни.


person netzding    schedule 03.10.2018    source источник
comment
Вам нужно будет проверить все журналы изменений и уведомления об обновлении Symfony, а также sonata и twig.   -  person Veve    schedule 03.10.2018
comment
я исправил все устаревания, связанные с кодовой базой, перед обновлением - но хорошо, тогда я посмотрю еще раз   -  person netzding    schedule 03.10.2018
comment
Эта ошибка, похоже, исходит от самих Sonata и Symfony, см. github.com/sonata-project/ SonataAdminBundle/issues/5238, затем github.com/symfony/symfony/issues/28658< /а>   -  person Veve    schedule 03.10.2018


Ответы (1)


Эта ошибка исходит от Symfony, см. ОШИБКА: FormatterBundle\Formatter\Pool::add() должен внедрить интерфейс, затем [DI] Ошибка при дампе контейнера для встроенных сервисов

Вам придется подождать, пока это исправление будет объединено, или если вы плеер, примените его сами.

person Veve    schedule 03.10.2018