public function formulaireadressesessionAction() { if ($this->getRequest()->isXmlHttpRequest()) { /* Initialisation de variables */ $statusForm = null; // 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(); $session = new Container('societeSession'); $adresses = $session->offsetGet('adresses', array()); /* Initialisation de l'adresse */ $adresse = new Adresse(); $uniqid = $this->params()->fromRoute('id'); if (!empty($uniqid)) { // Récupération de l'adresse depuis la base de données //$adresse=$em->getRepository('Adresse\Entity\Adresse')->find($id); // Récupération de l'adresse depuis la session $a = $adresses[$uniqid]; if ($a == null) { throw new \Exception($translator->translate('Cette adresse n\'existe pas')); } $adresse->exchangeArray($a, $em); } else { $uniqid = null; /* // Ajout d'une reférence vers le client ou le fournisseur pour la nouvelle adresse if(isset($_GET['from']) && isset($_GET['refFrom'])) { $refFrom=(int)$_GET['refFrom']; switch($_GET['from']) { case 'client': $client=$em->getRepository('Client\Entity\Client')->find($refFrom); $adresse->setRefClient($client); break; case 'fournisseur': $fournisseur = $em->getRepository('Fournisseur\Entity\Fournisseur')->find($refFrom); $adresse->setRefFournisseur($fournisseur); break; } }*/ } /* Creation du formulaire d'adresse */ $form = new AdresseForm($translator, $em, $adresse, $request); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { $statusForm = true; $adresse->exchangeArray($form->getData(), $em); if (is_null($uniqid)) { $uniqid = uniqid('', true); } $adresses[$uniqid] = $adresse->getArrayCopy(); $session->offsetSet('adresses', $adresses); $spanAdresse = $this->creationSpanAdresse($adresse, $uniqid); return new JsonModel(array('statut' => $statusForm, 'uniqid' => $uniqid, 'reponse' => $spanAdresse)); } else { $statusForm = false; $errors = $form->getMessages(); return new JsonModel(array('statut' => $statusForm, 'reponse' => $errors)); } } /* Affichage du formulaire sans le layout (en modal) */ $viewModel = new ViewModel(); $viewModel->setVariables(array('adresse' => $adresse, 'form' => $form, 'id' => $uniqid))->setTerminal(true); return $viewModel; } return $this->redirect()->toRoute('home'); // Ou on redirige l'utilisateur vers une autre page }