Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
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
Solution actuellement retenue
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
... 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
Pages: 1