|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
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 |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 421 ![]() |
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 :
Pour modifier le formulaire il suffit de modifier les éléments Zend_Form pas besoin de revenir sur la javascript. Suis je claire ? |
||
|
|
00
|
|
|
#3 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
Très clair, ça répond parfaitement
Merci ! |
|
|
00
|
|
|
#4 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
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] |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 421 ![]() |
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' |
|
|
00
|
|
|
#6 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
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
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 421 ![]() |
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. |
|
|
00
|
|
|
#8 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
Pourquoi ça retournerait sans index? Vue que quand on ajoute un element on met à jour les index
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com