PUGXMultiUserBundle:将存储库注入注册表错误
PUGXMultiUserBundle: inject repository into registration form error
我希望能够将存储库注入注册表单(类似于 this approach)以在事件侦听器中使用,但我得到:
Catchable Fatal Error: Argument 1 passed to AppBundle\Form\RegistrationType::__construct() must > be an instance of AppBundle\Entity\FocusRepository, string given, called in G:\Documents\workspace> \match\vendor\pugx\multi-user-bundle\PUGX\MultiUserBundle\Model\UserDiscriminator.php on line 155
我可以在模板中解决这个问题,但使用事件侦听器似乎是更优雅的解决方案。有什么建议吗?
形式
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 的 class)。我已经放弃了这个问题并使用了不同的方法。但我现在知道我也许可以使用 Compiler Pass 来覆盖 FOSUserBundle 注册表单服务以允许附加参数。因此存在解决方案但从未尝试过。
我希望能够将存储库注入注册表单(类似于 this approach)以在事件侦听器中使用,但我得到:
Catchable Fatal Error: Argument 1 passed to AppBundle\Form\RegistrationType::__construct() must > be an instance of AppBundle\Entity\FocusRepository, string given, called in G:\Documents\workspace> \match\vendor\pugx\multi-user-bundle\PUGX\MultiUserBundle\Model\UserDiscriminator.php on line 155
我可以在模板中解决这个问题,但使用事件侦听器似乎是更优雅的解决方案。有什么建议吗?
形式
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 的 class)。我已经放弃了这个问题并使用了不同的方法。但我现在知道我也许可以使用 Compiler Pass 来覆盖 FOSUserBundle 注册表单服务以允许附加参数。因此存在解决方案但从未尝试过。