Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
salut,
je suis entrain de realiser une application de gestion de projets
l'administrateur veux ajouter un nouveau utilisateur ,le login de ce dernier ne doit pas exister dans la base (sinon deux utilisateur avec le meme login !)
pour cela je fait ça :
$existLoginValidator = new Zend_Validate_Db_NoRecordExists('utilisateur', 'LOGIN_UTL'); $LOGIN_UTL = new Zend_Form_Element_Text('LOGIN_UTL'); $LOGIN_UTL->addValidator($existLoginValidator);
donc dans un ajout ,si le login entré existe dans la base,un message est affiché et le formulaire n'est pas accepté.
maintenant cette contrainte doit figurer dans la modification aussi ,pour cela
Zend_Validate_Db_NoRecordExists doit prendre un autre argument $except
pour chercher dans toute la base mais pas dans mla ligne de l'utilisateur en cours de modification (sinon le message d'erreur s'affichera toujours)
$existLoginValidator = new Zend_Validate_Db_NoRecordExists( 'utilisateur', 'LOGIN_UTL', array( 'field' => 'ID_UTL', 'value' => $id) );
j'ai pensé a :
-passer un parametre au controleur mais sans succes car quand j'instancie le formulaire j'ai pas encore recuperé l'id
-dans l'action où je recupere l'id j'ajoute le validator (je trouve ça logique) .
voici le code de l'action modifier :
$form = new Form_utilisateur(); $this->view->form = $form; $this->view->title= 'Modifier utilisateur'; if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $NOM_UTL = $form->getValue('NOM_UTL'); $PRENOM_UTL = $form->getValue('PRENOM_UTL'); $EMAIL_UTL = $form->getValue('EMAIL_UTL'); $ADRESSE_UTL = $form->getValue('ADRESSE_UTL'); $CATEGORIE_UTL = $form->getValue('CATEGORIE_UTL'); $LOGIN_UTL = $form->getValue('LOGIN_UTL'); $PASS_UTL = $form->getValue('PASS_UTL'); $id = $form->getValue('ID'); if ($id < 1) throw new Exception('error ' . $id); $user = new Model_Utilisateur(); $user->modifierUtilisateur($id,$NOM_UTL,$PRENOM_UTL,$EMAIL_UTL, $ADRESSE_UTL,$CATEGORIE_UTL,$LOGIN_UTL,$PASS_UTL); $this->_redirect('/utilisateurs'); } } else { $id = $this->_getParam('id', 0); if ($id > 0) { $form->getElement('ID')->setValue($id); $existLoginValidator = new Zend_Validate_Db_NoRecordExists( 'utilisateur', 'LOGIN_UTL', array( 'field' => 'ID_UTL', 'value' => $id) ); $form->getElement('LOGIN_UTL')->addValidator($existLoginValidator); $user = new Model_Utilisateur(); $form->populate($user->getUtilisateur($id)); } else throw new Exception("Probleme de passage de parametre par GET"); }
merci d'avance
Dernière modification par Vincent (03-08-2009 18:04:35)
Hors ligne
N'oubliez pas d'indiquer le tag [Résolu] dans le titre du sujet lorsque tu as solutionner ton problème
Ps: je l'ai fais pour toi
Hors ligne
Pages: 1