PUGXMultiUserBundle:将存储库注入注册表单错误


PUGXMultiUserBundle: inject repository into registration form error

我希望能够将存储库注入到注册表单中(类似于这种方法)以在事件侦听器中使用,但我得到:

可捕获的致命错误:参数1传递给AppBundle'Form'RegistrationType::__construct()必须>是AppBundle'Entity'FocusRepository的一个实例,字符串给定,在G:'Documents'workspace> 'match'vendor'pugx'multi-user-bundle' pugx' MultiUserBundle'Model'UserDiscriminator.php中调用

我可以在模板中解决这个问题,但使用事件侦听器似乎是更优雅的解决方案。有什么建议吗?

形式
namespace AppBundle'Form;
use Symfony'Component'Form'FormBuilderInterface;
use Symfony'Component'OptionsResolver'OptionsResolver;
use FOS'UserBundle'Form'Type'RegistrationFormType;
use AppBundle'Entity'FocusRepository;
class RegistrationType extends RegistrationFormType
{
    private $focusRepo;
    public function __construct(FocusRepository $focusRepo)
    {
        $this->focusRepo = $focusRepo;
    }
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
   ...
    }
   ...
}

服务:

services:
    app.focus_repository:
        class: Doctrine'ORM'EntityRepository
        factory_service: doctrine.orm.default_entity_manager
        factory_method: getRepository
        arguments:
            - AppBundle'Entity'Focus

发生错误是因为PUGXMultiUserBundle使用FOSUserBundle注册(和配置文件)表单。这些表单在构造函数中已经有一个字符串(表示User的类)。我已经放弃了这个问题,正在使用不同的方法。但是我现在知道,我也许可以使用Compiler Pass来覆盖FOSUserBundle注册表单服务,以允许一个额外的参数。所以有一个解决方案,但从未尝试过。