Ejemplo n.º 1
0
 /**
  * 
  * @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()));
 }
Ejemplo n.º 2
0
 /**
  * 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()));
 }