/** * Permet la creation ou la modification d'un interlocuteur fournisseur en session */ public function formulaireinterlocuteursessionAction() { if ($this->getRequest()->isXmlHttpRequest()) { /* Initialisation de variables */ $statusForm = null; // Récupération de l'EntityManager $em = $this->getEntityManager(); // Récupération du Service Manager $sm = $this->getServiceLocator(); // Récupération du traducteur $translator = $sm->get('Translator'); // Récupération de la requete $request = $this->getRequest(); // Récupération de la session $session = new Container('societeSession'); $interlocuteurs = $session->offsetGet('interlocuteurs', array()); /* Initialisation de l'interlocuteur */ $interlocuteur = new InterlocuteurFournisseur(); $uniqid = $this->params()->fromRoute('id'); if (!empty($uniqid)) { // Récupération de l'interlocuteur depuis la session $i = $interlocuteurs[$uniqid]; if ($i == null) { throw new \Exception($translator->translate('Cet interlocuteur n\'existe pas')); } $interlocuteur->exchangeArray($i, $em); } else { $uniqid = null; } /* Creation du formulaire d'adresse */ $form = new InterlocuteurFournisseurForm($translator, $sm, $em, $request, $interlocuteur); if ($request->isPost()) { $form->setData($request->getPost()); if (!$form->isValid()) { $errors = $form->getMessages(); unset($errors['ref_societe_fournisseur']); if (sizeof($errors) > 0) { $statusForm = false; return new JsonModel(array('statut' => $statusForm, 'reponse' => $errors)); } else { $statusForm = true; $interlocuteur->exchangeArray($form->getData(), $em); if (is_null($uniqid)) { $uniqid = uniqid('', true); } $interlocuteurs[$uniqid] = $interlocuteur->getArrayCopy(); $session->offsetSet('interlocuteurs', $interlocuteurs); $spanInterlocuteur = $this->creationSpanInterlocuteur($interlocuteur, $uniqid); return new JsonModel(array('statut' => $statusForm, 'uniqid' => $uniqid, 'reponse' => $spanInterlocuteur)); } } else { $statusForm = true; $interlocuteur->exchangeArray($form->getData(), $em); if (is_null($uniqid)) { $uniqid = uniqid('', true); } $interlocuteurs[$uniqid] = $interlocuteur->getArrayCopy(); $session->offsetSet('interlocuteurs', $interlocuteurs); $spanInterlocuteur = $this->creationSpanInterlocuteur($interlocuteur, $uniqid); return new JsonModel(array('statut' => $statusForm, 'uniqid' => $uniqid, 'reponse' => $spanInterlocuteur)); } } /* Affichage du formulaire sans le layout (en modal) */ $viewModel = new ViewModel(); $viewModel->setVariables(array('interlocuteur' => $interlocuteur, 'form' => $form, 'id' => $uniqid))->setTerminal(true); return $viewModel; } return $this->redirect()->toRoute('home'); }