/** * {@inheritDoc} */ public function removeAdresse(\Adresse\Entity\Adresse $adresse) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeAdresse', array($adresse)); return parent::removeAdresse($adresse); }
/** * Permet la creation ou la modificaton d'un fournisseur */ public function formulairefournisseurAction() { /* Initialisation de variables */ // Récupération du traducteur $translator = $this->getServiceLocator()->get('Translator'); // Récupération de l'EntityManager $em = $this->getEntityManager(); // Récupération de la requete $request = $this->getRequest(); // Récupération de la session du fournisseur $session = new Container('societeSession'); $utilisateur = new Container('utilisateur'); /* Initialisation du fournisseur */ $fournisseur = null; $id = (int) $this->params()->fromRoute('id'); if (!empty($id)) { // Récupération du fournisseur $fournisseur = $em->getRepository('Fournisseur\\Entity\\Fournisseur')->find($id); if ($fournisseur == null) { throw new \Exception($translator->translate('Ce fournisseur n\'existe pas')); } //Assignation de variables au layout $this->layout()->setVariables(array('headTitle' => $translator->translate('Modifier un fournisseur'), 'breadcrumbActive' => $fournisseur->getRaisonSociale(), 'route' => array('Fournisseurs', 'Modification'), 'action' => 'formulairefournisseur', 'module' => 'fournisseur', 'plugins' => array('jquery-ui', 'mask'))); } else { // On crée un nouveau fournisseur $id = null; $fournisseur = new Fournisseur(); //Assignation de variables au layout $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouveau fournisseur'), 'breadcrumbActive' => $translator->translate('Nouveau fournisseur'), 'route' => array('Fournisseurs'), 'action' => 'formulairefournisseur', 'module' => 'fournisseur', 'plugins' => array('jquery-ui', 'mask'))); } // Mise en session des adresses du fournisseur $array1 = array(); if (!$request->isPost()) { $adresses = $fournisseur->getAdresses(); foreach ($adresses as $a) { $uniqid = uniqid('', true); $array1[$uniqid] = $a->getArrayCopy(); } } else { $array1 = $session->offsetGet('adresses', array()); } $session->offsetSet('adresses', $array1); // Mise en session des interlocuteurs du fournisseur $array2 = array(); if (!$request->isPost()) { $interlocuteurs = $fournisseur->getInterlocuteurs(); foreach ($interlocuteurs as $i) { $uniqid = uniqid('', true); $array2[$uniqid] = $i->getArrayCopy(); } } else { $array2 = $session->offsetGet('interlocuteurs', array()); } $session->offsetSet('interlocuteurs', $array2); // Creation du formulaire du fournisseur $form = new FournisseurForm($translator, $em, $request, $fournisseur); if ($request->isPost()) { //$adresse=new \Application\Entity\Adresse; $form->setData($request->getPost()); if ($form->isValid()) { /* Hydratation de l'objet fournisseur avec les données du formulaire */ $fournisseur->exchangeArray($form->getData(), $em); /* Remplacement des adresses du fournisseur par celles en Session */ $adresses = $session->offsetGet('adresses', array()); foreach ($fournisseur->getAdresses() as $a1) { $fournisseur->removeAdresse($a1); } foreach ($adresses as $a2) { $nouvelleAdresse = new Adresse(); $nouvelleAdresse->exchangeArray($a2, $em); $fournisseur->addAdresse($nouvelleAdresse); } /* Remplacement des interlocuteurs du fournisseur par ceux en Session */ $interlocuteurs = $session->offsetGet('interlocuteurs', array()); foreach ($fournisseur->getInterlocuteurs() as $i1) { $fournisseur->removeInterlocuteur($i1); } foreach ($interlocuteurs as $i2) { $nouvelInterlocuteur = new InterlocuteurFournisseur(); $nouvelInterlocuteur->exchangeArray($i2, $em); $fournisseur->addInterlocuteur($nouvelInterlocuteur); } try { $em->persist($fournisseur); // Persiste les adresses et les interlocuteurs en cascade avec le fournisseur $em->flush(); } catch (\Exception $e) { $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde du fournisseur. Vérifiez que tous les champs sont valides (Informations générales, interlocuteurs, adresses..).'); $messagesFlash = $this->flashArray; $messagesFlash['errors'][] = $erreurMessage; $utilisateur->offsetSet('messagesFlash', $messagesFlash); return new ViewModel(array('fournisseur' => $fournisseur, 'form' => $form, 'id' => $id)); } return $this->redirect()->toRoute('fournisseur/consulter_fournisseur', array('id' => $fournisseur->getId())); } } return new ViewModel(array('fournisseur' => $fournisseur, 'form' => $form, 'id' => $id)); }