1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
public function registerAction(Request $request, $id = '0')
{
/** @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);
$user->setIp($this->getRequest()->getClientIp());
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$session = $request->getSession();
if($id != '0'){
$session->set('booking', $id);
}
$redirect = false;
if (null !== $request->request->get('red') ) {
$redirect = true;
}
$form = $formFactory->createForm();
$form->setData($user);
$form->handleRequest($request);
if ($form->isValid()) {
$user = $form->getData();
$this->authenticateUser($user);
$key = '_security.main.target_path';
if ($this->container->get('session')->has($key)) {
$url = $this->container->get('session')->get($key);
$this->container->get('session')->remove($key);
} elseif ( $session->get('booking') == '0') {
$url = $this->container->get('router')->generate('base_bledvoyage_homepage');
} else {
$url = $this->container->get('router')->generate('bledvoyage_booking', array('id' => $session->get('booking')));
$session->remove('booking');
}
$response = new RedirectResponse($url);
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$userManager->updateUser($user);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
if ($id != '0'){
$response = $this->render('FOSUserBundle:Registration:register_booking.html.twig', array(
'form' => $form->createView(),
'id' => $id,
));
}elseif ($redirect == true){
$response = $this->render('BaseBledvoyageBundle:Default:booking.html.twig', array(
'form' => $form->createView(),
'booking' => $request->request->get('red'),
));
}elseif ($id == '0'){
$response = $this->render('FOSUserBundle:Registration:register.html.twig', array(
'form' => $form->createView(),
));
}
return $response;
} |
Partager