Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonsoir,
je débute avec Zend et l'architecture MVC, je suis devant un dilemme :
1. j'ai un formulaire qui contient un certain nombre de champs (nom, prenom,date de naissance par ex)
2. je dois controler que la base de données ne contient pas plus de 3 fois la clé [nom+prenom+datenaissance] pour poursuivre la création du contact (utilisation des sous formulaires)
Qui est chargé de faire la vérification dans la base ? Zend_Form en surchargeant isValid, ou le controleur quand isValid retourne true ?
Zend_Form peut le faire puisque je considère que mon formulaire est valide si je ne retrouve pas la clé plus de 3 fois, mais quid du message d'erreur ?
Quel est votre avis ?
Merci de vos suggestions, orientations et conseils.
Hors ligne
Bonjour,
Il existe une classe Zend_Validate_Db inclue dans le framework. Tu devrais essayer de prendre le no record exists et de le surcharger pour prendre en compte ta contrainte des trois enregistrements.
Hors ligne
Quand on peut, le mieux est de surcharger les validateurs existant. Voire d'en créer de nouveaux. Tout simplement parce que ça donne du code réutilisable.
Donc +1 pour Théocrite.
Hors ligne
Bonjour,
merci pour vos réponses. Je vais chercher dans ce sens.
Si j'ai bien compris, quelque soit le formulaire et le type de validations que l'on souhaite (même avec recherche dans un base de données), il faut créer un validateur.
Je pensais que les validateurs n'étaient que des contrôles de forme (date au bon format, chaine comprise entre X et Y caractères...).
Bonne soirée !
--------------------
Après réflexion, cela reste obscure. Je m'explique :
un validateur s'applique sur un champ par exemple pour le lien de Théocrite, Zend_Validate_Db_NoRecordExists s'appliquerait sur le champ email.
Dans mon cas j'ai besoin que 3 champs soient fournis pour les concaténer puis vérifier dans la base le nombre de fois ou cette clé apparaît.
Je peux toujours créer un validateur, mais la question reste toujours la même ou instancier le validateur dans isValid du formulaire ou dans le controleur si isValid retourne true ?
Merci pour vos retours.
Dernière modification par ss04 (26-07-2011 19:26:42)
Hors ligne
Les validateurs sont là pour valider quelque chose. Là tu veux valider "que la base de données ne contient pas plus de 3 fois la clé [nom+prenom+datenaissance] pour poursuivre la création du contact (utilisation des sous formulaires)". C'est donc une validation que tu veux.
L'instanciation du validateur se fait dans ton contrôleur : si ton formulaire est valide (au niveau du reste), alors tu instancies ton dernier validateur et tu contrôle qu'il est valide. Dans le cas contraire, tu ajoutes un message d'erreur global à ton formulaire.
Hors ligne
Merci Ender!
Ta réponse me convient parfaitement.
Merci à tous pour vos lumières.
Hors ligne
Pages: 1