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 :

Plusieurs formulaires sur une page


Sujet :

Zend_Form PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut Plusieurs formulaires sur une page
    Bonjour,

    J'ai actuellement un problème avec Zend_Form : J'ai plusieurs formulaire sur une page, et je voudrais vérifier quel bouton submit a été cliqué (dans mon controller).
    Avec $_POST['nom_du_bouton'] ça fonctionne très bien, mais je voudrais plutôt utiliser les fonctions de Zend.
    Après avoir recherché une solution, je suis tombé sur la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->getElement('nom_du_bouton')->isChecked()
    mais je constate que celle-ci me renvoie toujours false.

    Pourriez-vous m'aider à résoudre ce problème ?

    Merci d'avance !

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 107
    Points : 86
    Points
    86
    Par défaut
    Bonjour

    Je veux bien t'aider à résoudre ton problème (si j'y arrive),
    pourrais tu montrer le code de ton controller?

    Pour ma part, dans un de mes controller, j'ai deux boutons, un de confirmation, un qui annule.
    Je vérifie quel bouton a été pressé avant d'effectuer certaines actions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($form->annuler->isChecked()) {
                    $this->_redirect($this->urlRetour);
                }
    Donc, je suppose que ce n'est pas le petit bout de code qui pose problème, mais autre chose.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Merci !

    Voilà le code de mon controller :
    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
    24
     
    $form1 = new Application_Form_MonFormulaire1();
    $form2 = new Application_Form_MonFormulaire2();
    $this->view->form1 = $form1;
    $this->view->form2 = $form2;
     
    if($this->getRequest()->isPost())
    {
         if($form1->submit->isChecked())
         {
              if($form1->isValid($this->getRequest()->getPost()))
              {
                   //etc
              }
         }
     
         if($form2->submit->isChecked())
         {
              if($form2->isValid($this->getRequest()->getPost()))
              {
                   //etc
              }
         }
    }
    Il ne me semble pas qu'il y ait d'erreur, mais bon on sait jamais
    Par contre, si l'erreur ne vient pas de là, peut-être que ça vient du fichier qui contient la classe du formulaire non ?

  4. #4
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 107
    Points : 86
    Points
    86
    Par défaut
    J'ai réussi à obtenir ce que tu veux, me semble

    Tu rajoute ça avant ton if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $formData   = $this->_request->getPost();
     $form1->populate($formData);
     $form2->populate($formData);

    Voilà mon code:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public function indexAction() {
     
            $form1 = new Gestion_Form_Test1();
            $form2 = new Gestion_Form_Test2();
            $this->view->form1 = $form1;
            $this->view->form2 = $form2;
     
            if($this->getRequest()->isPost())
            {
     
                $formData   = $this->_request->getPost();
                $form1->populate($formData);
                 $form2->populate($formData);
     
                if ($form1->validertest1->isChecked()) {
     
     
                      if($form1->isValid($this->getRequest()->getPost()))
                      {
                          echo 'test 1 valide';
                      }else{
                          echo 'test 1 non valide';
                      }
     
                  }
                 if ($form2->validertest2->isChecked()) {
                      if($form2->isValid($this->getRequest()->getPost()))
                       {
                          echo 'test 2 valide';
                      }else{
                          echo 'test 2 non valide';
                      }
                 }
            }
        }

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Je trouve ça bizarre de "remplir" les 2 formulaires avec les mêmes données mais bon, ça fonctionne !

    Je cherche à faire la même chose avec Zend_Form_Image maintenant (qui envoie le formulaire à la place du bouton "submit"). J'ai essayé cette méthode mais ça n'a pas l'air de fonctionner

    Aurais-tu une solution à me proposer ?

  6. #6
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 107
    Points : 86
    Points
    86
    Par défaut
    Désolé, le week end, je touche plus au php, repos des neurones.

    Donc là, je veux bien t'aider mais je n'ai pas compris exactement ce que tu souhaite faire avec ton zend form image?

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Normalement, <input type='image' /> permet d'envoyer un formulaire, comme <input type='submit' /> .
    Il y a dans Zend_Form_Image une méthode isChecked(), comme pour Zend_Form_Submit, sauf que celle là ne fonctionne pas

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/09/2014, 14h59
  2. [2.x] Plusieurs Formulaires sur une pages
    Par jeyGey dans le forum Symfony
    Réponses: 1
    Dernier message: 14/12/2012, 18h29
  3. Plusieurs formulaires sur une même page
    Par patsak dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2008, 17h14
  4. [XI] obtenir plusieurs colonnes sur une page
    Par Aurazed dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 12/06/2007, 16h10
  5. imprimer formulaire sur une page
    Par the big ben 5 dans le forum Access
    Réponses: 1
    Dernier message: 16/08/2006, 20h33

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