Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-05-2008 19:04:06

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Affichage Erreurs de saisie sans Zend_Form

Bonjour à tous smile

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

 

#2 25-05-2008 19:38:44

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Affichage Erreurs de saisie sans Zend_Form

Bonjour,

Pour l'affichage dese erreurs ils y a déja un helper : formErrors.
T'as juste à faire dans ta vue

Code:

$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 :

Code:

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()

Code:

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 :

Code:

$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

 

#3 25-05-2008 20:10:56

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: Affichage Erreurs de saisie sans Zend_Form

mais tes lignes n'ont pas forcement un  id  différent??

puis... smile 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

 

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