使用PUGX多用户将用户传递给symfony2 formType

使用PUGX多用户将用户传递给symfony2 formType,symfony,fosuserbundle,pugxmultiuserbundle,Symfony,Fosuserbundle,Pugxmultiuserbundle,我使用PUGX MultiuserBundle是因为我有3种不同类型的用户,具有不同的信息 一切正常,我可以注册不同的用户 我想做的是:注册用户one it’s ok=>这个用户可以创建他的合作伙伴,并选择将他放在哪个机构中 所以,在我的第二个表单类型中,我必须通过用户1,这样我才能获得他的所有设置。但我不知道如何使用PUGX bundle 我的控制器: class BarmanController extends Controller { /** * Register new

我使用PUGX MultiuserBundle是因为我有3种不同类型的用户,具有不同的信息

一切正常,我可以注册不同的用户

我想做的是:注册用户one it’s ok=>这个用户可以创建他的合作伙伴,并选择将他放在哪个机构中

所以,在我的第二个表单类型中,我必须通过用户1,这样我才能获得他的所有设置。但我不知道如何使用PUGX bundle

我的控制器:

class BarmanController extends Controller
{
    /**
     * Register new Barman entities.
     *
     * @Route("/register", name="barman_register")
     * @Template()
     */
    public function registerAction()
    {
        $user = $this->container->get('security.context')->getToken()->getUser();
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('Cac\UserBundle\Entity\Barman', $user);
    }
}
class RegistrationController extends Controller
{
    public function registerAction(Request $request)
    {
        /** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
        $formFactory = $this->get('fos_user.registration.form.factory');
        /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
        $userManager = $this->get('fos_user.user_manager');
        /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
        $dispatcher = $this->get('event_dispatcher');

        $user = $userManager->createUser();
        $user->setEnabled(true);

        $event = new GetResponseUserEvent($user, $request);
        $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);

        if (null !== $event->getResponse()) {
            return $event->getResponse();
        }

        $form = $formFactory->createForm();

        $form->setData($user);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $event = new FormEvent($form, $request);
            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);

            $userManager->updateUser($user);

            if (null === $response = $event->getResponse()) {
                if (strpos($request->getPathInfo(), "/barman/") === false) {
                    $url = $this->generateUrl('fos_user_registration_confirmed');
                    $response = new RedirectResponse($url);
                }
                else
                {
                    $this->get('session')->getFlashBag()->add('notice','Le barman a était créé !');
                    $response = new Response('barman');
                }
            }

            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

            return $response;
        }

        return $this->render('CacUserBundle:Registration:register.html.twig', array(
            'form' => $form->createView(),
        ));
    }
}
PUGX注册管理器:

/**
     * 
     * @param string $class
     * @return \Symfony\Component\HttpFoundation\RedirectResponse
     */
    public function register($class, $user)
    {
        $this->userDiscriminator->setClass($class);
        $this->controller->setContainer($this->container);
        $result = $this->controller->registerAction($this->container->get('request'));        
        if ($result instanceof RedirectResponse) {
            return $result;
        }

        $template = $this->userDiscriminator->getTemplate('registration');
        if (is_null($template)) {
            $engine = $this->container->getParameter('fos_user.template.engine');
            $template = 'FOSUserBundle:Registration:register.html.'.$engine;
        }

        $form = $this->formFactory->createForm();   
        return $this->container->get('templating')->renderResponse($template, array(
            'form' => $form->createView(),
        ));
    }
以及第二个用户的my formType:

class BarmanFormType extends AbstractType
{
    private $class;

    /**
     * @param string $class The User class name
     */
    public function __construct($class)
    {
        $this->class = $class;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $id = 5;
        $builder
            ->add('username', null, array('label' => 'Nom d\'utilisateur'))
            ->add('plainPassword', 'repeated', array(
                'label' => 'Mot de passe',
                'type' => 'password',
                'options' => array('translation_domain' => 'FOSUserBundle'),
                'first_options' => array('label' => 'Mot de passe'),
                'second_options' => array('label' => 'Confirmez votre mot de passe'),
                'invalid_message' => 'fos_user.password.mismatch',
            ))
            ->add('email', 'repeated', array(
                    'type' => 'email',
                    'options' => array('translation_domain' => 'FOSUserBundle'),
                    'first_options' => array('label' => 'E-mail'),
                    'second_options' => array('label' => 'Confirmez votre e-mail'),
                    'invalid_message' => 'fos_user.email.mismatch',
            ))
            ->add('bar', 'entity', array('class' => 'CacBarBundle:Bar', 'property' => 'name', 'attr' => array('placeholder' => 'Bar'),
                'query_builder' => function(\Cac\BarBundle\Entity\BarRepository $er) use ($id) {
                    return $er->getBarByAuthorId($id);
                }
            ));
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => $this->class,
            'intention'  => 'registration',
        ));
    }

    public function getName()
    {
        return 'cac_barman_registration';
    }
}
我还有一个通用注册控制器,它覆盖FOS用户注册控制器:

class BarmanController extends Controller
{
    /**
     * Register new Barman entities.
     *
     * @Route("/register", name="barman_register")
     * @Template()
     */
    public function registerAction()
    {
        $user = $this->container->get('security.context')->getToken()->getUser();
        return $this->container
                    ->get('pugx_multi_user.registration_manager')
                    ->register('Cac\UserBundle\Entity\Barman', $user);
    }
}
class RegistrationController extends Controller
{
    public function registerAction(Request $request)
    {
        /** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
        $formFactory = $this->get('fos_user.registration.form.factory');
        /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
        $userManager = $this->get('fos_user.user_manager');
        /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
        $dispatcher = $this->get('event_dispatcher');

        $user = $userManager->createUser();
        $user->setEnabled(true);

        $event = new GetResponseUserEvent($user, $request);
        $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);

        if (null !== $event->getResponse()) {
            return $event->getResponse();
        }

        $form = $formFactory->createForm();

        $form->setData($user);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $event = new FormEvent($form, $request);
            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);

            $userManager->updateUser($user);

            if (null === $response = $event->getResponse()) {
                if (strpos($request->getPathInfo(), "/barman/") === false) {
                    $url = $this->generateUrl('fos_user_registration_confirmed');
                    $response = new RedirectResponse($url);
                }
                else
                {
                    $this->get('session')->getFlashBag()->add('notice','Le barman a était créé !');
                    $response = new Response('barman');
                }
            }

            $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

            return $response;
        }

        return $this->render('CacUserBundle:Registration:register.html.twig', array(
            'form' => $form->createView(),
        ));
    }
}
我设法在PUGX部分中获取用户,但我不知道如何将其从RegistrationManager传递到我的FormType


我尝试了很多可能性,我想我很接近,但找不到解决方案来让它工作

嗨,你找到解决方案了吗?没有找到解决方案,我必须快速修复它,所以我修改了捆绑包。但是我应该试着通过服务或者类似的方式来传递它