Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-08-2009 15:31:34

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

[Résolu][Zend_Validate]comment passer l'id a Zend_Validate_Db_NoRecord

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 :

Code:

$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)

Code:

$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 :

Code:

$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 smile

Dernière modification par Vincent (03-08-2009 18:04:35)

Hors ligne

 

#2 03-08-2009 17:46:37

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [Résolu][Zend_Validate]comment passer l'id a Zend_Validate_Db_NoRecord

j'ai trouvé la solution a l'aide d'un membre de developpez.com , je vous invite a jeter un coup d'oeil ici

merci smile

Hors ligne

 

#3 03-08-2009 18:05:13

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: [Résolu][Zend_Validate]comment passer l'id a Zend_Validate_Db_NoRecord

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 wink


aka miboo

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages