IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Formulaire et erreur


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Par défaut Formulaire et erreur
    Bonjour,
    J'aimerai savoir comment faire pour afficher une erreur (addError) que si le champ est vide par exemple mais que l'erreur ne s'affiche qu' après avoir soumis le formulaire.

    Donc quand on arrive pour la première fois sur la page où se trouve le formulaire aucune erreur ne s'affiche.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Il ne faut valider ton formulaire que s'il a été soumis.
    Pour cela, si ton formulaire est transmis en mode POST, le plus simple est de le vérifier avant validation dans ton action (je suppose que tu utilises le MVC) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Si le formulaire a été soumis, on le valide (requête POST)
    if ($this->getRequest()->isPost())
    {
        if ($form->isValid($_POST))
        {
            // formulaire valide... => traitements
        }
    }
    // affectation du formulaire à la vue
    $this->view->form = $form;

  3. #3
    Membre confirmé Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Par défaut
    Oui c'est ce que j'ai fais pour le traitement.
    Mais j'ai vraiment du mal à m'exprimer car tout le monde me dit la méme chose ^^.

    Par exemple sur ce site : http://bidsoo.com/inscription-gratuite.html
    Quand on arrive pour la premiére fois sur la page ( donc sans $_POST) aucun message n'apparait.
    Si on valide le formulaire en ne remplissant aucun champ alors les messages d'erreur apparaissent 'Ce champ est obligatoire'.

    Alors que sur mon script à moi quand on accède pour la premiére fois à la page il y a dèja les messages d'erreur.

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par guillaume40 Voir le message
    Oui c'est ce que j'ai fais pour le traitement.
    Mais j'ai vraiment du mal à m'exprimer car tout le monde me dit la méme chose ^^.

    Par exemple sur ce site : http://bidsoo.com/inscription-gratuite.html
    Quand on arrive pour la premiére fois sur la page ( donc sans $_POST) aucun message n'apparait.
    Si on valide le formulaire en ne remplissant aucun champ alors les messages d'erreur apparaissent 'Ce champ est obligatoire'.

    Alors que sur mon script à moi quand on accède pour la premiére fois à la page il y a dèja les messages d'erreur.
    Tu peux nous donner le code de ton action ?

  5. #5
    Membre confirmé Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Par défaut
    Oui alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    	public function contactAction(){
    		$this->view->title = '';
     
    		$this->view->render('index/contact.phtml');
     
    		$form = new contact();
     
    		if( $form->isValid($this->getRequest()->getPost()) && $this->getRequest()->isPost() ){
    			$contact = $form->getValues();
     
    			$transport = new Zend_Mail_Transport_Smtp('XXX');
     
    			$mail = new Zend_Mail('UTF-8');
    			$mail->setSubject($contact['sujet']);
    			$mail->addTo('XXX');
    			$mail->setFrom($contact['email'], 'De : ' . $contact['nom'] . ' ' . $contact['prenom']);
    			$mail->setBodyHtml(nl2br(stripslashes($contact['contenu'])), 'UTF-8');
    			$mail->send($transport);
     
    			$this->view->contact = 'Votre mail à été envoyé avec succés !';
    		}else{
    			$this->view->contact = $form;
    		}

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Fais la vérification isPost() AVANT la validation du formulaire
    Donc a minima :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) )
    Decette façon, la validation (qui entraîne l'affichage les erreurs) n'est pas faite si le formulaire n'a pas été transmis.

  7. #7
    Membre expérimenté
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Si le formulaire a été soumis, on le valide (requête POST)
    if ($this->getRequest()->isPost())
    {
        if ($form->isValid($_POST))
        {
            // formulaire valide... => traitements
        }
    }
    // affectation du formulaire à la vue
    $this->view->form = $form;
    Question de design je préconise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($this->getRequest()->isPost() && $form->isValid($_POST))
    {
           // formulaire valide... => traitements
    }
    Évitons de dupliquer les if

  8. #8
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Par défaut
    Salut
    Au cas de submitation
    tu teste si les données sont valides tu fais le traitemet et tu redirge le navigateur vers l'action suivante par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $this->_redirect("controlleur/action")
    si non tu fais un message d'erreur par $this->view->messageErreur =" ERReur. . ...";
    et tu redirige le navigateur vers la page à remplir (le view qui contient le formulaire ).
    dans le view normalment tu doit avoir un teste php comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($this->messageErreur ) echo $this->messageErreur ;
    remarque au cas d'erreur meme si tu ne fait pas redirect zend prendra par defaut la (view == page) avec le meme nom de l'action


    remarque 2 : tu peut tester tout avant submit Mais avec Java scripte dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form onsubmit="return testerFormulaire()" action=" action" >
    la fonction testerFormulaire() tu doit la faire d'abord

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2008, 09h21
  2. Formulaire dynamique : Erreur 29054
    Par Secco dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/06/2008, 09h53
  3. Formulaire hérité erreur
    Par exile69 dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 18/09/2007, 13h07
  4. Réafficher formulaire si erreur
    Par temar dans le forum SQL
    Réponses: 4
    Dernier message: 05/06/2007, 16h11
  5. [Formulaire] Gestion erreur saisie d'une requête
    Par b_steph_2 dans le forum IHM
    Réponses: 6
    Dernier message: 05/01/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo