composer Ошибка при composer update -- FosUserBundle

И снова связка Composer - FosUserBundle внезапно напоминает о своём существовании в моём проекте. Предыдущие "разборки" можно поискать здесь. На этот раз контроллер регистрации, переопределённый мной, после composer update перестал видеть используемый базовым контроллером FactoryInterface.

Текст ошибки:

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\RuntimeException: Cannot autowire service "AppBundle\Controller\RegistrationController": argument "$formFactory" of method "FOS\UserBundle\Controller\RegistrationController::__construct()" references interface "FOS\UserBundle\Form\Factory\FactoryInterface" but no such service exists. You should maybe alias this interface to one of these existing services: "fos_user.profile.form.factory", "fos_user.registration.form.factory", "fos_user.change_password.form.factory", "fos_user.resetting.form.factory". Did you create a class that implements this interface? in /var/www/gelberk/data/www/dev.gelberk.dymov.tech/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php:37 Stack trace: #0 /var/www/gelberk/data/www/dev.gelberk.dymov.tech/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php(60): Symfony\Component\DependencyInjection\Compiler\DefinitionErrorExceptionPass in /var/www/gelberk/data/www/dev.gelberk.dymov.tech/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php on line 37

Решение

Как я поняла, опытные разработчики вообще не советуют переопределять контроллеры FosUserBundle, а работать с событиями.

Но т.к. я уже с головой переопределила регистрацию, а времени как всегда - "уже вчера всё должно было быть готово", то я просто объявила FactoryInterface самого бандла в конфигурациях своих сервисов со ссылкой на родной класс (/src/AppBundle/Resources/services.yml):

fos_user.group.form.factory:
    class: FOS\UserBundle\Form\Factory\FactoryInterface

 # aliases:
    FOS\UserBundle\Form\Factory\FactoryInterface: '@fos_user.group.form.factory'

Источники

vedro-compota's picture

это надо подшивать в симфони, к композеру как таковому относится слабо.

_____________
матфак вгу и остальная классика =)