Esempio n. 1
0
 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
 }