public function formulairepersonnelAction() { if ($this->getRequest()->isXmlHttpRequest()) { /* Initialisation de variables */ $statusForm = null; // Récupération du Service Manager $sm = $this->getServiceLocator(); // Récupération du traducteur $translator = $sm->get('Translator'); // Récupération de l'EntityManager $em = $this->getEntityManager(); // Récupération de la requete $request = $this->getRequest(); $utilisateur = new Container('utilisateur'); /* Initialisation du client */ $id = (int) $this->params()->fromRoute('id'); $personnel = null; if (!empty($id)) { // Récupération du personnel $personnel = $em->getRepository('Personnel\\Entity\\Personnel')->find($id); if ($personnel == null) { throw new \Exception($translator->translate('Cet utilisateur n\'existe pas')); } //Assignation de variables au layout $this->layout()->setVariables(array('headTitle' => $translator->translate('Profil utilisateur'), 'breadcrumbActive' => $personnel->getPrenom() . ' ' . $personnel->getNom(), 'route' => array(), 'action' => 'formulairepersonnel', 'module' => 'personnel', 'plugins' => array())); } else { // On crée un nouvel utilisateur $id = null; $personnel = new Personnel(); //Assignation de variables au layout $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouvel utilisateur'), 'breadcrumbActive' => $translator->translate('Nouvel utilisateur'), 'route' => array(), 'action' => 'formulairepersonnel', 'module' => 'personnel', 'plugins' => array())); } // Creation du formulaire du personnel $form = new PersonnelForm($translator, $personnel, $sm, $em, $request); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { /* Hydratation de l'objet Personnel avec les données du formulaire */ $statusForm = true; $personnel->exchangeArray($form->getData(), $em); if ($id == null) { $motDePasse = $this->genererMotDePasse(); $personnel->setMotDePasse(md5($motDePasse)); } try { $em->persist($personnel); $em->flush(); if ($personnel->getAdministrateur()) { $motDePasse = $utilisateur->offsetGet('mot_de_passe'); $em->refresh($personnel); // Ceci permet de mettre à jour le personnel avec les données de la base de données (pour réccupérer l'ID par exemple) $this->miseEnSessionUtilisateur($personnel, $motDePasse); // Mise à jour du personnel en session s'il s'agit de la personne connectée } return new JsonModel(array('statut' => $statusForm, 'pwd' => $motDePasse)); } catch (\Exception $e) { $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde de votre profil. Vérifiez que tous les champs sont valides.'); $messagesFlash = $this->flashArray; $messagesFlash['errors'][] = $erreurMessage; $utilisateur->offsetSet('messagesFlash', $messagesFlash); /* Affichage du formulaire sans le layout (en modal) */ $viewModel = new ViewModel(); $viewModel->setVariables(array('personnel' => $personnel, 'form' => $form, 'id' => $id))->setTerminal(true); return $viewModel; } return $this->redirect()->toRoute('personnel'); } 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('personnel' => $personnel, 'form' => $form, 'id' => $id))->setTerminal(true); return $viewModel; } return $this->redirect()->toRoute('home'); }
/** * {@inheritDoc} */ public function setMotDePasse($motDePasse) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMotDePasse', array($motDePasse)); return parent::setMotDePasse($motDePasse); }