PUGXMultiUserBundle Ошибка контейнера - PullRequest
0 голосов
/ 04 июля 2018

Я установил PUGXMultiUserBundle, используя эту документацию , и я следую этому, но у меня есть ошибка

Ошибка типа: аргумент 1 передан в FOS \ UserBundle \ Controller \ RegistrationController :: __ construct () должен реализовывать интерфейс Symfony \ Component \ EventDispatcher \ EventDispatcherInterface, ни один не указан ... enter image description here

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');
    }
}

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, что это ошибка в пакете PUGX, которая не обновлена.

Они определяют контроллер регистрации FOSUserBundle как сервис, подобный этому:

pugx_multi_user.registration_controller:
      class: FOS\UserBundle\Controller\RegistrationController

Но у RegistrationController в FOSUserBundle есть некоторые зависимости:

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

Или переопределить все определение в своих собственных сервисах .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'
...