composer Ошибка при composer update -- FosUserBundle
Primary tabs
И снова связка 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'
Источники
- Log in to post comments
- 3701 reads
vedro-compota
Tue, 02/20/2018 - 14:36
Permalink
это надо подшивать в симфони,
это надо подшивать в симфони, к композеру как таковому относится слабо.
_____________
матфак вгу и остальная классика =)