Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-09-2010 17:15:11

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

[RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

Bonjour à tous,


Je désire proposer à des utilisateurs de changer leurs informations.
Je voudrais que ces informations soient découpées en plusieurs parties, chacune d'entre-elles dans un Onglet.

Exemple :
Onglet 1 : Nom, Prénom, Login + boutons Valider
Onglet 2 : Adresse, Tel, email + bouton Modifier
Onglet 3 : mot de passe + bouton Changer


Mes trois formulaires sont faits.
Mis à part l'obligation d'utiliser des submit avec des valeurs "simples" différentes, c'est tout bon.
Lorsque je valide chacun, et qu'il y a des erreurs, celles-ci sont reportées comme il faut. J'utilise un décorateur perso, mais de façon classique, les erreurs s'affichent au-dessus du formulaire.
J'ai même utilisé des validateurs perso pour les erreurs. Ils fonctionnent.

J'ai deux problèmes.
Le premier problème problème est d'autre pratique :
L'utilisateur change des infos dans le Tab 2 par exemple. Il valide. S'il y a des erreurs, celles-ci s'affichent bien au-dessus du formulaire 2 MAIS la page affiche le tab 1 !
Résultat l'utilisateur ne sait pas que le formulaire n'a pas été rempli correctement !

Comment empêcher la page de se rafraîchir dans un cas comme celui-là ?



Le second problème est bien plus gênant. Il concerne la traduction.
en effet, dans chaque formulaire, je charge le fichier de traduction qui se trouve dans /librairy/.
Mais pour une raison que j'ignore, si ça fonctionne pour le premier formulaire, ça plante pour le second "file not found" dès qu'il y a un second formulaire !


Merci d'avance pour votre aide.
Et si vous avez une meilleure façon de procéder, je suis preneur aussi.  ^_^

Dernière modification par gmifsud (09-09-2010 11:50:08)

Hors ligne

 

#2 06-09-2010 21:46:23

draghysck
Nouveau membre
Date d'inscription: 03-09-2009
Messages: 5

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

Bonjour, alors pour ton petit problème de ré actualisation :

La solution est assez simple, je suppose que dans ton controller, tu effectues un traitement différent pour chaque formulaire.

A la fin de chaque traitement tu ajoutes un paramètre tab dans ton url par exemple :

http://tonUrl/tab/2 (pour ton onglet 2 correspondant aux adresses)

Tu ajoutes également un peu de code jQuery pour ensuite faire le select du tab adéquat fournit en paramètre.

Hors ligne

 

#3 07-09-2010 09:43:44

Manax
Nouveau membre
Date d'inscription: 24-08-2010
Messages: 4

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

Bonjour,

Pour ton soucis de réactualisation il ya un tutoriel video sur le site de Zend a propos de "l'ajaxification" de la validation d'un formulaire avec jquery, voila le lien :

http://www.zendcasts.com/ajaxify-your-z … y/2010/04/

Ca te permettra de valider tes formulaires sans rafraîchir la page.

Hors ligne

 

#4 07-09-2010 10:28:14

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

Merci, draghysck.

Effectivement, j'effectue un traitement différent pour chaque formulaire.

Voici quelques détails supplémentaires.

Dans le contrôleur :

Code:

$form1 = new form_infogenerale
$form2 = new form_adresse
$form3 = new form_pass

if ($this->getRequest()->isPost()) {
    // On récupère les données renvoyées par le formulaire
    $formData = $this->getRequest()->getPost();
    
    // on rempli les formulaires avec les données renvoyées
    $form1->populate($formData);
    $form2->populate($formData);
    $form3->populate($formData);

    // On traite chaque formulaire en fonction du bouton cliqué
    if ($form1->Valider->isChecked()) {
        if ($form1->isValid($formData)) {
            TRAITEMENT;
            
            // On retourne sur la page qui permet de se loguer.
            $this->_helper->redirector('index', 'index', 'default');

        }
    }  elseif ($form3->Changer->isChecked()) {
        if ($form3->isValid($formData)) {
            TRAITEMENT;
            // On retourne sur la page qui permet de se loguer.
            $this->_helper->redirector('index', 'index', 'default');

        }
    }
etc
etc

Dans la vue :

Code:

<?php  echo  $this->tabContainer()
    ->addPane("tab1", "Informations générales", $this->form1)
    ->addPane("tab1", "Adresse", $this->form2)
    ->addPane("tab1", "Mot de passe", $this->form3)
    ->tabContainer("tab1", array(), array("class" => "flora")); ?>

Je ne vois pas quel redirector il me faudrait utiliser pour chaque tab ? C'est possible ?
Et je viens de penser que la commande redirector n'est lancée que si les données sont valides ! Je ne sais pas où contrôler l'affichage quand les données ne sont pas valides !?




J'aimerais bien essayer l'exemple donné dans la page de la doc sur les jquery et les formulaires :
http://www.mikaelkael.fr/doczf/1.10/fr/ … .form.html

L'ennui c'est que cet exemple est totalement abscon ! D'où vient le "$view" à la fin par exemple ?
Et puis, cet exemple, dans quel fichier doit-il être écrit : Un contrôleur ? Une vue ? Bref, je n'arrive pas à le faire fonctionner. sad

Bien sûr, rien ne garantit que le rafraichissement se fera correctement sur cet exemple officiel, mais j'aurais aimé essayé.

Si quelqu'un a un exemple qui fonctionne avec un formulaire sur plusieurs onglets, je suis preneur, même si je pense que ce n'est pas tout à fait ce dont j'ai besoin car moi je voudrais plusieurs formulaires chacun dans un onglet avec chacun un submit personnel.

Dernière modification par gmifsud (07-09-2010 10:30:33)

Hors ligne

 

#5 07-09-2010 14:01:10

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

pourquoi ne pas valider tes formulaires en ajax aussi en utilisant le ajaxcontext? tu te simplifierai la vie et tu pourrai donner des actions différentes pour chaque traitement de formulaire

Hors ligne

 

#6 07-09-2010 16:06:08

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

thorin19> En général j'évite ajax tant que je peux pour une question d'accessibilité.
Et puis ZF propose des mécanismes de traitement des formulaires qui semblent relativement puissants alors je me suis dit que j'allais m'en servir.

Cependant, j'ai bien conscience qu'en voulant lancer un traitement sur un onglet sans rechargement de la page, je demande quelque chose qui devrait être plutôt fait en ajax.

Au fait, merci pour tes divers tuto sur ton blog.



Manax> toutes mes excuses, je n'avais pas vu ton message ! Je suis vraiment confus.
Je vais regarder ce lien, même si comme dit plus haut, je préfèrerais ne pas utiliser ajax pour de la validation et le réserver au "eye candy".
Merci, et encore désolé.

Hors ligne

 

#7 09-09-2010 11:49:15

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Formulaires sur une seule page dans des Onglets Jquery ?

Rebonjour à tous.


J'ai réussi à régler le problème d'insertion du fichier de traduction. Il y avait tout simplement un bête Include_once à la place d'un include, bref...



Concernant le rafraichissement du tab, j'ai la solution, qui était évidente.
Elle consiste tout simplement à rajouter setAction au formulaire contenu dans l'onglet, avec l'url de l'onglet, tout simplement.

Exemple, dans la définition de mon premier formulaire (form1) :
    $this->setAction('UrlDeMaPage#tab1-frag-1');  // pour le premier onglet
...
Et dans form3 :
    $this->setAction('UrlDeMaPage#tab1-frag-3');  // pour le troisième onglet



Des fois que cela puisse aider d'autres personnes...



Merci pour vos réponses, elles m'ont donné des pistes. En particulier l'ajaxification du formulaire me semble bien alléchante.

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