/** * * @param Request $request * @return type */ public function suscribeAction(Request $request) { //On créé un objet company $company = new Company(); $infos = new Infos(); $company->setInfos($infos->setLat('BIM')->setUpdateCoords(TRUE)); // On crée le FormBuilder grâce au service form factory $form = $this->get('form.factory')->create(new CompanyType(), $company); //Si le formulaire est valide if ($form->handleRequest($request)->isValid()) { //on récupère l'utilisateur $user = $this->container->get('security.context')->getToken()->getUser(); // on upload le logo $company->getLogo()->upload('logo', $user->getId()); //on récupère l'entity manager $em = $this->getDoctrine()->getManager(); //on associe company et user $user->setCompany($company); //on génère le slider avec 3 slides par défault $slider = new Slider(); $slider->setNbOfSlides(3); $slider->setSize('M'); for ($i = 0; $i < 3; $i++) { $slide = new Image(); $slide->setAlt('Temporary pic')->setExt('svg')->setName('slide_' . ($i + 1))->setUrl('Defaults/img/slide_' . ($i + 1) . '.svg')->setType('slide')->setSliderPosition($i + 1)->setSlider($slider); $em->persist($slide); //on associe la slide au slider $slider->addSlide($slide); } //on associe le slider à l'utilisateur $company->setSlider($slider); //on persiste les entités $em->persist($user); $em->persist($infos); $em->persist($company); $em->persist($slider); //on enregistre en bdd $em->flush(); //on redirige vers la page d'administration de l'utilisateur return $this->redirect($this->generateUrl('stpe_cms_home')); } return $this->render('STPECMSBundle::Inscription/suscribe.html.twig', array('form' => $form->createView())); }
/** * Registers an user and set to it some defaults datas * * @param Request $request * @return RedirectResponse */ 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'); /* * on créé les objets constituants le form */ $user = $userManager->createUser(); $company = new Company(); $infos = new Infos(); /* * on relie les objets entre eux */ $user = $user->setCompany($company); $company->setInfos($infos); $user->setEnabled(true); $event = new GetResponseUserEvent($user, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event); if (null !== $event->getResponse()) { return $event->getResponse(); } /* * on créé le formulaire */ $form = $formFactory->createForm(); $form->setData($user); $form->handleRequest($request); /* * Si le formulaire est valide */ if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); /* * on génère le slider par défaut */ $slider = new Slider(); $slider->setNbOfSlides(3); $slider->setSize('M'); /* * on génère les slides par défaut */ for ($i = 0; $i < 3; $i++) { $slide = $this->createSlide($slider); $em->persist($slide); //on associe la slide au slider $slider->addSlide($slide); } /* * on génère le logo par défaut */ $logo = $this->createLogo(); /* * on génère l'image promo par défaut */ $promoImg = $this->createPromoImg(); /* * on génère le design par défaut */ $design = $this->createDesign(); /* * on "attache" les objets entre eux */ $company->setLogo($logo); $infos->setPromoImage($promoImg); $company->setDesign($design); $company->setSlider($slider); /* * on persiste les entités */ $em->persist($promoImg); $em->persist($user); $em->persist($infos); $em->persist($company); $em->persist($design); $em->persist($slider); $em->persist($logo); $event = new FormEvent($form, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); //on ajoute le role CMS ADMIN à l'utilisateur $user->addRole('ROLE_CMS_ADMIN'); $userManager->updateUser($user); /* * on enregistre tout en bdd */ $em->flush(); if (null === ($response = $event->getResponse())) { $url = $this->generateUrl('fos_user_registration_confirmed'); $response = new RedirectResponse($url); } $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); return $response; } return $this->render('FOSUserBundle:Registration:register.html.twig', array('form' => $form->createView())); }