salut ,
dans un formulaire je voudrais verifier l'existance du login dans la base de donnees ,pour la formulaire d'ajout pas de probleme en utilisant Zend_Validate_Db_NoRecordExists comme ça :
mais pour la formulaire de modification ,zend doit chercher la valeur entrée dans la base sauf dans la ligne de l'utilisateur a modifié .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $existLoginValidator = new Zend_Validate_Db_NoRecordExists( 'utilisateur', 'LOGIN_UTL')
ça serait comme ça :
j'ai pensé a ajouter un parametre au constructeur pour faire un teste et ajouter le validator adequat ,maleuheusement ce n'est pas une solution car la formulaire est instancié au debut de l'action, la valeur 'id' de la ligne n'est pas encore recupéré .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $existLoginValidator = new Zend_Validate_Db_NoRecordExists( 'utilisateur', 'LOGIN_UTL', array( 'field' => 'ID_UTL', 'value' => $id) );
donc j'ai penser a mettre les lignes qui font la difference entre les deux formulaires d'ajout et de modification(qui sont le Validator) dans l'action comme ça :
voila tout, je m'arrache les cheveux depuis quelques heures mais sans succes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 $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![]()
Partager