Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/09/2011, 14h41   #1
Rédacteur
 
Avatar de Bakura
 
Homme Michaël
Étudiant
Inscription : septembre 2005
Messages : 1 367
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 22
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 1 367
Points : 2 701
Points : 2 701
Par défaut SubForm ou élément composé ?

Bonjour,

Dans mon formulaire, je souhaite que l'utilisateur puisse ajouter une ou plusieurs expériences professionnelles, chaque expérience étant caractérisé par des types de base (nom de l'entreprise, poste occupé...).

J'ai donc pensé à deux choses : soit je créé un élément composé du type App_Form_Element_Experience qui affichera et validera l'ensemble des données (auquel cas, j'ajouterai dans mon formulaire un ou plusieurs éléments de ce type), ou alors je créé ou sous-formulaire (SubForm) que j'instancie en un ou plusieurs fois dans mon formulaire principal.

Quelle est, selon vous, la meilleure manière de faire ? Quelles sont les avantages et les inconvénients de tel ou tel méthode ?

Merci
Bakura est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h51   #2
Membre confirmé
 
Avatar de magnus2005
 
Inscription : avril 2005
Messages : 421
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 421
Points : 253
Points : 253
Ce que je fait dans ces cas :
1. je crée les éléments de base nécessaire dans le Zend_form correspondant pour ton cas à une expérience pro et je les mets dans le même groupe avec Display group et je cache ce groupe via la CSS.
2. j'ajoute un bouton 'Ajouter exp pro' et Avec JQuery quand on clique sur le bouton je fait une copie du groupe créé avec Zend_form et j’incrémente un compteur javascript que me sert à modifier un attribut name à la volée. Le name sera 'nomduchampdebase' +'_' + compteur.
3 Quand le formulaire est soumis je créé dynamiquement les nouveau éléments nécessaire en me basant sur la méthode qui à créée la partie 1 et en parsant les clef du formulaire commençant par 'nomduchampdebase' +'_'.

Avantage de la methode :
peu de javascript environ 7 lignes :
Code :
1
2
3
4
5
6
 
compteur++;
var contenu = jQuery('#idgroupdebase').html();
//replace ALL sur contenu sur nomduchampdebase par 
//nomduchampdebase_ + compteur
jQuery('#idform').append(contenu);
Traitement avec Zend_Form complet on garde bien les mêmes validations.
Pour modifier le formulaire il suffit de modifier les éléments Zend_Form pas besoin de revenir sur la javascript.

Suis je claire ?
magnus2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h55   #3
Rédacteur
 
Avatar de Bakura
 
Homme Michaël
Étudiant
Inscription : septembre 2005
Messages : 1 367
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 22
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 1 367
Points : 2 701
Points : 2 701
Très clair, ça répond parfaitement .

Merci !
Bakura est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 18h06   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
La réponse est trés bonne cependant afin de faire comme dans un formulaire standard j aurais mis pour le nom du champs

nomduchamps[position]
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 19h26   #5
Membre confirmé
 
Avatar de magnus2005
 
Inscription : avril 2005
Messages : 421
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 421
Points : 253
Points : 253
Effectivement un collègue m'a fait la même remarque.
Du coup je lui posé la question suivante :
Qu'elle est traitement exacte que fait PHP au niveau de la conservation des index spécifié ?
J'ai pas trouvé la doc zend sur cette spécification et du coup j'ai pas fait le test en PHP 5.3.

Dans tous les cas j'ajoute un caractère identifiant en plus pour différencier le groupe de base qui sert à la génération par rapport au champs générés ce qui donnerait :
'nomduchampdebase' +'_' +'[index]'

J'ai eu une remarque sur le JQuery :
On m'a dit que ce serait plus propre de remplacer les attributs via la DOM sauf que ça oblige à faire plus de code et des vérifications plus poussées voir spécifique selon les champs.
avec ma méthode 'ReplaceALL' je change tous donc je prend tous les cas en compte en plus des 'name' comme les 'for' pour les tag 'label'
magnus2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 20h37   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Je n ai rien vue non plus du coté des spécifications mais je sais qu avec ma notation on recupere directement un tableau nomduchamps
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 22h18   #7
Membre confirmé
 
Avatar de magnus2005
 
Inscription : avril 2005
Messages : 421
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 421
Points : 253
Points : 253
Oui mais la question est quand il y a plusieurs tableaux du type :
ligne_champ_nom[0] ligne_champ_prenom[0] ligne_champ_age[0]
ligne_champ_prenom[1] ligne_champ_age[1]
ligne_champ_nom[2] ligne_champ_age[2]
ligne_champ_nom[3] ligne_champ_prenom[3] ligne_champ_age[3]

Est ce PHP me retourne toujours les correspondances selon les index et pas un truc sans index ?
Il faudrait que j'essaie déjà pour voir sur la conf que j'ai.
magnus2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2011, 10h14   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Pourquoi ça retournerait sans index? Vue que quand on ajoute un element on met à jour les index
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h36.


 
 
 
 
Partenaires

Hébergement Web