8000 Merge pull request #2546 from Querdos/master · FriendsOfSymfony/FOSUserBundle@730a8a5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 730a8a5

Browse files
authored
Merge pull request #2546 from Querdos/master
Update registerAction documentation with FormFactory
2 parents 81a5d66 + 883a006 commit 730a8a5

File tree

1 file changed

+50
-25
lines changed

1 file changed

+50
-25
lines changed

Resources/doc/overriding_controllers.rst

Lines changed: 50 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -66,36 +66,61 @@ the base controller and adds logging a new user registration to it.
6666
{
6767
public function registerAction(Request $request)
6868
{
69-
$form = $this->container->get('fos_user.registration.form');
70-
$formHandler = $this->container->get('fos_user.registration.form.handler');
71-
$confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
72-
73-
$process = $formHandler->process($confirmationEnabled);
74-
if ($process) {
75-
$user = $form->getData();
76-
77-
/*****************************************************
78-
* Add new functionality (e.g. log the registration) *
79-
*****************************************************/
80-
$this->container->get('logger')->info(
81-
sprintf('New user registration: %s', $user)
82-
);
83-
84-
if ($confirmationEnabled) {
85-
$this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
86-
$route = 'fos_user_registration_check_email';
87-
} else {
88-
$this->authenticateUser($user);
89-
$route = 'fos_user_registration_confirmed';
69+
/** @var $formFactory FactoryInterface */
70+
$formFactory = $this->get('fos_user.registration.form.factory');
71+
/** @var $userManager UserManagerInterface */
72+
$userManager = $this->get('fos_user.user_manager');
73+
/** @var $dispatcher EventDispatcherInterface */
74+
$dispatcher = $this->get('event_dispatcher');
75+
76+
$user = $userManager->createUser();
77+
$user->setEnabled(true);
78+
79+
$event = new GetResponseUserEvent($user, $request);
80+
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
81+
82+
if (null !== $event->getResponse()) {
83+
return $event->getResponse();
84+
}
85+
86+
$form = $formFactory->createForm();
87+
$form->setData($user);
88+
89+
$form->handleRequest($request);
90+
91+
if ($form->isSubmitted()) {
92+
if ($form->isValid()) {
93+
$event = new FormEvent($form, $request);
94+
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
95+
96+
$userManager->updateUser($user);
97+
98+
/*****************************************************
99+
* Add new functionality (e.g. log the registration) *
100+
*****************************************************/
101+
$this->container->get('logger')->info(
102+
sprintf("New user registration: %s", $user)
103+
);
104+
105+
if (null === $response = $event->getResponse()) {
106+
$url = $this->generateUrl('fos_user_registration_confirmed');
107+
$response = new RedirectResponse($url);
108+
}
109+
110+
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
111+
112+
return $response;
90113
}
91114
92-
$this->setFlash('fos_user_success', 'registration.flash.user_created');
93-
$url = $this->container->get('router')->generate($route);
115+
$event = new FormEvent($form, $request);
116+
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event);
94117
95-
return new RedirectResponse($url);
118+
if (null !== $response = $event->getResponse()) {
119+
return $response;
120+
}
96121
}
97122
98-
return $this->container->get('templating')->renderResponse('@FOSUser/Registration/register.html.twig', array(
123+
return $this->render('@FOSUser/Registration/register.html.twig', array(
99124
'form' => $form->createView(),
100125
));
101126
}

0 commit comments

Comments
 (0)
0