PUGXMultiUserBundle 容器错误
PUGXMultiUserBundle Container error
我使用这个 documentation 安装了 PUGXMultiUserBundle 并且我遵循了这个,但是我有一个错误
类型错误:传递给 FOS\UserBundle\Controller\RegistrationController::__construct() 的参数 1 必须实现给定的接口 Symfony\Component\EventDispatcher\EventDispatcherInterface、none...
fos_user:
db_driver: orm
firewall_name: main
user_class: AppBundle\Entity\User
service:
user_manager: pugx_user_manager
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
pugx_multi_user:
users:
simple_user:
entity:
class: AppBundle\Entity\SimpleUser
registration:
form:
type: AppBundle\Form\SimpleUserType
name: fos_user_registration_form
validation_groups: [Registration, Default]
template: AppBundle:Registration:simple_user.form.html.twig
society_user:
entity:
class: AppBundle\Entity\SocietyUser
registration:
form:
type: AppBundle\Form\SocietyUserType
name: fos_user_registration_form
validation_groups: [Registration, Default]
template: AppBundle:Registration:society_user.form.html.twig
这是我的 RegistrationSimpleUserController:
/**
* Class RegistrationSimpleUserController
* @package AppBundle\Controller
*
*/
class RegistrationSimpleUserController extends Controller
{
/**
* @return mixed
*
*
* @Route("/register/simple", name="registration_simple_user")
*/
public function registerAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('Acme\UserBundle\Entity\UserOne');
}
}
我认为这是 PUGX 包中的一个错误,它不是最新的。
他们将 FOSUserBundle 注册控制器定义为这样的服务:
pugx_multi_user.registration_controller:
class: FOS\UserBundle\Controller\RegistrationController
但是 FOSUserBundle 中的 RegistrationController 有一些依赖:
public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenStorageInterface $tokenStorage)
{
$this->eventDispatcher = $eventDispatcher;
$this->formFactory = $formFactory;
$this->userManager = $userManager;
$this->tokenStorage = $tokenStorage;
}
我想你可以通过这样定义一个别名来解决它:
pugx_multi_user.registration_controller:
alias: fos_user.registration.controller
或者在你自己的定义中覆盖整个定义services.yml:
pugx_multi_user.registration_controller:
class: FOS\UserBundle\Controller\RegistrationController
arguments:
- '@event_dispatcher'
- '@fos_user.registration.form.factory'
- '@fos_user.user_manager'
- '@security.token_storage'
我使用这个 documentation 安装了 PUGXMultiUserBundle 并且我遵循了这个,但是我有一个错误
类型错误:传递给 FOS\UserBundle\Controller\RegistrationController::__construct() 的参数 1 必须实现给定的接口 Symfony\Component\EventDispatcher\EventDispatcherInterface、none...
fos_user:
db_driver: orm
firewall_name: main
user_class: AppBundle\Entity\User
service:
user_manager: pugx_user_manager
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
pugx_multi_user:
users:
simple_user:
entity:
class: AppBundle\Entity\SimpleUser
registration:
form:
type: AppBundle\Form\SimpleUserType
name: fos_user_registration_form
validation_groups: [Registration, Default]
template: AppBundle:Registration:simple_user.form.html.twig
society_user:
entity:
class: AppBundle\Entity\SocietyUser
registration:
form:
type: AppBundle\Form\SocietyUserType
name: fos_user_registration_form
validation_groups: [Registration, Default]
template: AppBundle:Registration:society_user.form.html.twig
这是我的 RegistrationSimpleUserController:
/**
* Class RegistrationSimpleUserController
* @package AppBundle\Controller
*
*/
class RegistrationSimpleUserController extends Controller
{
/**
* @return mixed
*
*
* @Route("/register/simple", name="registration_simple_user")
*/
public function registerAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('Acme\UserBundle\Entity\UserOne');
}
}
我认为这是 PUGX 包中的一个错误,它不是最新的。
他们将 FOSUserBundle 注册控制器定义为这样的服务:
pugx_multi_user.registration_controller:
class: FOS\UserBundle\Controller\RegistrationController
但是 FOSUserBundle 中的 RegistrationController 有一些依赖:
public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenStorageInterface $tokenStorage)
{
$this->eventDispatcher = $eventDispatcher;
$this->formFactory = $formFactory;
$this->userManager = $userManager;
$this->tokenStorage = $tokenStorage;
}
我想你可以通过这样定义一个别名来解决它:
pugx_multi_user.registration_controller:
alias: fos_user.registration.controller
或者在你自己的定义中覆盖整个定义services.yml:
pugx_multi_user.registration_controller:
class: FOS\UserBundle\Controller\RegistrationController
arguments:
- '@event_dispatcher'
- '@fos_user.registration.form.factory'
- '@fos_user.user_manager'
- '@security.token_storage'