Ejemplo n.º 1
0
 public function load(ObjectManager $manager)
 {
     $users = array('pepe' => array('name' => 'Pepe', 'addresses' => array(array('street' => 'Calamar 23', 'city' => 'valencia'), array('street' => 'Perico 3', 'city' => 'lagos'))), 'juan' => array('name' => 'Juan', 'addresses' => array(array('street' => 'Castellana 45', 'city' => 'madrid'))), 'manuel' => array('name' => 'Manuel', 'addresses' => array(array('street' => 'Principal 94', 'city' => 'fafe'))));
     foreach ($users as $username => $user) {
         $newUser = new User();
         $newUser->setUsername($username);
         $profile = new Profile();
         $profile->setName($user['name']);
         $newUser->setProfile($profile);
         $addresses = new ArrayCollection();
         foreach ($user['addresses'] as $address) {
             $newAddress = new Address();
             $newAddress->setStreet($address['street']);
             $city = sprintf('city-%s', $address['city']);
             $newAddress->setCity($this->getReference($city));
             $addresses->add($newAddress);
         }
         $newUser->setAddresses($addresses);
         $manager->persist($newUser);
     }
     $manager->flush();
 }
Ejemplo n.º 2
0
 /**
  * @Route("/forms/user/{username}/edit", name="examples_forms_user_edit")
  * @ParamConverter("user", class="MainBundle:User")
  * @Template("MainBundle:Example\Form:edit_user.html.twig")
  */
 public function userEditAction(User $user, Request $request)
 {
     $originalAddresses = array();
     // Create an array of the current Address objects in the database
     foreach ($user->getAddresses() as $address) {
         $originalAddresses[] = $address;
     }
     $form = $this->createForm(new UserType(), $user);
     if ($request->isMethod("POST")) {
         $form->bind($request);
         if ($form->isValid()) {
             $em = $this->getDoctrine()->getManager();
             // filter $originalAddresses to contain adressess no longer present
             foreach ($user->getAddresses() as $address) {
                 foreach ($originalAddresses as $key => $toDel) {
                     if ($toDel->getId() === $address->getId()) {
                         unset($originalAddresses[$key]);
                     }
                 }
             }
             // remove the relationship between the address and the Task
             foreach ($originalAddresses as $address) {
                 // remove the Address from the User
                 $user->getAddresses()->removeElement($address);
                 // if you wanted to delete the Address entirely, you can also do that
                 $em->remove($address);
             }
             $em->persist($user);
             // $em->flush();
             $flashBag = $this->get('session')->getFlashBag();
             $flashBag->add('smtc_success', 'Se ha editado un usuario:');
             $flashBag->add('smtc_success', sprintf('Username: %s', $user->getUsername()));
             $flashBag->add('smtc_success', sprintf('Nombre: %s', $user->getProfile()->getName()));
             if (0 !== count($user->getAddresses())) {
                 $flashBag->add('smtc_success', 'Direcciones:');
                 foreach ($user->getAddresses() as $address) {
                     $flashBag->add('smtc_success', sprintf('  %s (%s)', $address->getStreet(), $address->getCity()->getName()));
                 }
             }
             return $this->redirect($this->generateUrl('examples_forms'));
         }
     }
     return array('form' => $form->createView(), 'user' => $user);
 }