Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-08-2010 16:56:32

senayar2
Nouveau membre
Date d'inscription: 25-08-2010
Messages: 3

Formulaire sur Plusieurs pages

Bonjour,

Je dois créer un formulaire en 5 etapes qui doit slide à chaque fois que l'on click "suivant" donc le forum doit etre integré dans une seule page mais il doit être dynamique.

j'ai cherche des exemples ou tutoriaux sur le net pour m'aide à le réalise mais ils sont tous trop vieux donc non compatible avec la version de Zend actuel.

J'ai bien compris qu'il fallait que je crée mon formulaire avec des subform pour l'afficher dynamiquement, mais la doc de Zend est tellement pauvre que je n'y comprend rien.

Je n'ai trouvé aucun exemple récent de création de multi forms, quelqu'un pourrait il m'aiguiller ?



Merci bonne journée

Dernière modification par senayar2 (27-08-2010 16:58:18)

Hors ligne

 

#2 27-08-2010 20:40:00

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Formulaire sur Plusieurs pages

Bonjour,
De ce que j'ai vu au cours de mes tests :
- si un "<form>" contient d'autres "<form>" seul le form contenant la zone de saisie ou le bouton entrainant la validation du formulaire sera envoyé au serveur.
- les "subform" du zend framework ont un décorateur qui rajoute une balise "<form>" autour de chaque sous formulaire

A partir de là, j'en ai conclus plusieurs choses :
1) les sous formulaires ne sont utilisable tel quel que si on veut afficher des formulaires successif dans des pages successives (donc avec rechargement de la page entre chacun)  mais avec une validation finale qui dira si tout est bon dans tous les sous formulaires
2) si on veut tout afficher en une fois (sans recharger la page) sans enlever le "<form>" du sous formulaire alors il faudra obligatoirement du javascript pour l'envoie du formulaire (sans ça, il manquera des données)
3) si on enlève le décorateur "<form>" des sous formulaires et qu'on en met un autre dont le but est de créer le bloc qui sera tout à tour affiché et caché alors on peut se passer du javascript pour la validation du formulaire à condition de tout afficher au départ et ne cacher les pages que par javascript.

J'espère que mes maigres informations seront suffisante pour trouver une solution qui te convienne.

Hors ligne

 

#3 28-08-2010 10:35:48

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Formulaire sur Plusieurs pages

Bonjour,
Effectivement je suis assez d'accord, la doc n'est pas très clair sur les SubForms...
La partie qui t'intéresse est là :
http://framework.zend.com/manual/fr/zen … .multiPage

Pour ma part j'ai fais cela avec du JavaScript pour la validation partiel de chaque subform :

création du formulaire :

Code:

class Form_MonFormulaire exends Zend_form
{
     public function init()
     {
            $part1 = new Zend_Form_SubForm();
            $part1->addElement(array(mes_elements));

            $part2 = new Zend_Form_SubForm();
            $part2->addElement(array(mes_elements));
            .........etc
     }
}

controleur :

Code:

...
    public function init()
    {
        $cS = $this->_helper->getHelper('contextSwitch');
        $cS->addActionContext('partialvalidation', 'json')
              ->initContext();
    }

    public function formulaireAction()
    {
        $form = new Form_MonFormulaire()
        $this->view->formulaire = $form;
    }

     public function partialvalidationAction()
    {
         $form = new Form_MonFormulaire()
         if($form->isValidPartial($this->_getAllParams)){
              $this->view->valid = true;
         }else{
              $this->view->valid = false;
              $this->view->message = $for->getMesages();
         }
    }
...

formulaire.js avec Jquery:

Code:

$(function(){
     $('#id_du_bouton_suivant').click(function(){
          var data = {'format' : 'json'};
          $('.part1 input').each(function(){
               data[$(this).attr('name')] = $(this).val();
          });  
          $.post('/moncontrolleru/partialvalidation', data, function(rep){
                 if(rep['valid']){
                      // Hide part1 & display Part2 ...etc
                 }else{
                     // display message
                 }
          }, 'json');
     });
});

dans le dernier subform tu y met le Submit et tu fais une validation classique dans l'action "formulaire".
Il est important de déclarer le contexte switch dans l'init du contrôleur car c'est lui qui va désactiver les aides de vue (layout / render) et retourner tes variable au format json.
Je pense qu'il y a d'autres manières de faire mais dans mon cas j'ai adopter celle ci.
Dede


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#4 31-08-2010 17:01:40

senayar2
Nouveau membre
Date d'inscription: 25-08-2010
Messages: 3

Re: Formulaire sur Plusieurs pages

merci pour vos réponses je posterai mon code final pour les intéressés, merci bien smile

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