Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-04-2010 12:12:53

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

[Resolu ?] Validateur Db_NoRecordExists avec exclusion de champs

Bonjour,

Dans ma gestion utilisateur, je cherche a vérifier, en autre, qu'un email n'est pas présent en base sauf pour l'utilisateur qui cherche à faire cette modif. Mes formulaires sont générés via fichier ini.

Partie incriminée du fichier ini

Code:

elements.login.options.validators.exists.validator = "Db_NoRecordExists"
elements.login.options.validators.exists.options.table = "user"
elements.login.options.validators.exists.options.field = "login"
elements.login.options.validators.exists.options.exclude.field = "id"
;elements.login.options.validators.exists.options.exclude.value = "elements.id.value" (=> valeur du champs id)

Solution possible/envisageable  :
- Ajouter dynamiquement la valeur dans le constructeur de ma classe
- Modifier le fichier ini dynamiquement

Je ne vois pas comment gérer ça via Zend_Config hormis peut être en surclassant le validateur

Si vous avez une idée, je suis preneur

Dernière modification par ndesaleux (21-04-2010 18:02:25)

Hors ligne

 

#2 21-04-2010 18:00:58

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: [Resolu ?] Validateur Db_NoRecordExists avec exclusion de champs

Solution actuellement retenue

Code:

class ND_Validate_Db_NoRecordExists extends Zend_Validate_Db_NoRecordExists{
    
        
    public function isValid($value){
        
        if ( isset($this->_exclude['value']) && preg_match('#field\.(.+)#', $this->_exclude['value'], $match) ){
            $this->_exclude['value'] = Zend_Controller_Front::getInstance()
                                                ->getRequest()
                                                ->getPost($match[1]) ;
        }
        
        return parent::isValid($value);
        
    }
    
}

avec mon fichier ini

Code:

...
elements.email.options.validators.exists.validator = "Db_NoRecordExists"
elements.email.options.validators.exists.options.table = "user"
elements.email.options.validators.exists.options.field = "email"
elements.email.options.validators.exists.options.exclude.field = "id"
elements.email.options.validators.exists.options.exclude.value = "field.id"  
...

Cette solution me plait qu'a moitié mais je ne vois pas d'autres façon de faire

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