Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous
J'utilisais avant Zend_Form et j'avais donc les petits messages des Validators pour indiquer qu'en champs était obligatoire, etc
J'ai laissé tomber (comme d'autres d'après ce que j'ai compris) Zend_Form pour créer mes champs dynamiquement et je crée donc mes champs dans mon .phtml, car le XHTML devenait une usine à gaz à mettre en place. Placer la plus simple div ... bon voilà.
Donc maintenant je ne bénéficie pas des decorators qui permettaient d'avoir ces messages sous chanque champ incorrect.
Donc je dois creer et utiliser les validators avant la mise à jour de ma base de données, etc.
Tout va bien, sauf que je voudrais pouvoir afficher, lors de la saisie, en bas de page (de formulaire) une liste de messages pour dire "tel champ est obligatoire" ou "la date est incorrecte", etc; comme lorsque j'utilisais Zend_Form.
J'aimerais savoir si quelqu'un sait quelle est la façon la meilleure pour faire cela, en sachant que le meilleur serait de rester sur la page tout simplement en affichant les messages.
Une template ?
Une vue partielle?
Autre chose?
Merci
Hors ligne
Bonjour,
Pour l'affichage dese erreurs ils y a déja un helper : formErrors.
T'as juste à faire dans ta vue
$this->formErrors($this->errors);
$this->errors est un tableau des erreurs.
Par contre je suis confonté aussi à un probleme de validation de formulaire, dans le cas d'un formulaire multiligne (modification de plusieurs utilisateurs par ex), je recçois en post :
Array ( [id_utilisateur] => Array ( [1] => 1 [2] => 2 ) [login] => Array ( [1] => utilisateur1 [2] => utilisateur2 ) [password] => Array ( [1] => [2] => ) [password_verif] => Array ( [1] => [2] => ) [profil] => Array ( [1] => admin [2] => admin ) [valider] => Valider )
Le probleme est que Zend_Filter_Input me dit pas de quelle ligne viens l'erreur, par exemple si je fais une erreur sur 1 utilisateur sur 10, ou 5 sur dix ou tous ,j'obtiens avec getMessages()
Array ( [login] => Array ( [0] => stringLengthTooShort ) )
Donc aucun moyen d'associer directement l'erreur à l'input qui à généré l'erreur.
Quelqu'un saurait comment faire ça avec Zend_Input_Filter ou Zend_form ?
Pour info, le code associé à ma validation de formulaire :
$filters = array( 'login' => array('StringTrim','StripTags','StringToLower'), 'password' => array('StringTrim','StripTags','StringToLower'), 'password_verif' => array('StringTrim','StripTags','StringToLower') ); $validators = array( "login" =>array('allowEmpty' => false, new Zend_Validate_StringLength(5,20), 'messages' => array(sprintf($this->view->_('Champ "%3$s" entre %1$d et %2$d caractères'),5,20,$this->view->_('login'))) ), "password" =>array('allowEmpty' => true, 'alnum', 'messages'=> sprintf($this->view->_('Champ "%1$s" doit être alphanumérique'),$this->view->_('password')) ), "password_verif"=>array('allowEmpty' => true, 'alnum', 'messages'=> sprintf($this->view->_('Champ "%1$s" doit être alphanumérique'),$this->view->_('password_confirm'))) ); $options = array( 'notEmptyMessage' => $this->view->_("Empty '%field%'"), 'missingMessage' => $this->view->_("Empty '%field%'") ); $box = new Zend_Filter_Input($filters,$validators); $box->setOptions($options); $box->setData($formData);
Hors ligne
mais tes lignes n'ont pas forcement un id différent??
puis... je sais qu'il y a formErrors, ma question était peut-être mal posée, mais je vais gérer la validation du formulaire côté Ajax finalement....
Hors ligne
Pages: 1