Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
j'ai un formulaire avec deux champs obligatoires: $champ1 et $champ2. En plus d'être obligatoire, le champ $champ2 doit exister dans une de mes tables de ma base de données.
Voilà comment je m'y prends pour créer cet élément:
// Mes validateurs $ChampVide = new Zend_Validate_NotEmpty(); // pour vérifier que mon champ est non vide $ChampVide->setMessage ( 'Champ obligatoire', Zend_Validate_NotEmpty::IS_EMPTY ); $ChampExist = new Zend_Validate_Db_RecordExists("maTable", "monChamp"); // pour vérifier que mon champ existe bien dans ma table $ChampExist->setMessage ('Champ non existant'); // mon élément $Champ2 = new Zend_Form_Element_Text ( 'mon_champ2' ); $Champ2->addValidator ( $ChampVide , true ); // $breakchainOnFailure=true pour interrompre la procédure de test de l'existence de mon champ s'il est vide $Champ2->addValidator ( $ChampExist );
Quand je teste avec un champ2 non existant dans la base, j'ai bien le message d'erreur qui s'affiche "Champ non existant".
Si je ne renseigne pas ce champ (champ vide), j'ai un message d'erreur
Message: SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour l'entier : « »
ceci est du au fait que le 1er test "champVide" qui normalement a échoué, n'interrompt pas la procédure et est vérifié l'existence de la chaine vide " " via le validateur Db_RecordExists.
En revanche, si je défini autrement mon élément, le "breakChainOnFailure" est pris en compte et le 2nd test n'est pas effectué:
$Champ2 = new Zend_Form_Element_Text ( 'mon_champ2' ); $Champ2->addValidator (new Zend_Validate_NotEmpty() , true ); // $breakchainOnFailure=true pour interrompre la procédure de test de l'existence de mon champ s'il est vide $Champ2->addValidator ( $ChampExist );
Je ne comprends pas pourquoi mon formulaire réagit ainsi, si j'ai crée $ChampVide c'est parce que j'utilise ce validateur pour d'autres champs du formulaire et ce problème ne se pose pas vu que je n'affecte pas d'autres validateurs à ces éléments.
Désolé pour la longueur du message, et merci d'avance pour vos retours....
Hors ligne
UP!
Aucun retour???
Comment expliquer le fait que selon la façon dont j'affecte un validateur à mon élément, il va prendre en compre le 'breakChainOnFailure'????
Y aurait-il quelqu'un qui aurait une raison logique à ce problème ou bien je me suis trompé quelque part, mais où???
Dans l'attente d'un retour désespéremment , merci d'avance.....
Dernière modification par flilou (10-10-2011 17:29:50)
Hors ligne
Pages: 1