|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||
|
Invité régulier
![]() Inscription : septembre 2007 Messages : 37 ![]() |
Bonjour,
je galère pour imbriquer dynamiquement des forms sur symfony et j'aimerai vos avis et conseils. J'ai cherché un peu partout, j'ai trouvé des bouts de réponse mais qui ne correspondent pas exactement à mon cas. J'ai donc des articles que j'aimerai associer à des tags ou non. voici mon schéma (je simplifie au maximum): Code :
Code :
Code :
Code :
Code :
Code :
Cependant quant je clique sur le bouton "ajouter" j'ai ce message : "Unexpected extra form field named "affectation"." je me doute bien qu'il faut lui dire quelque part qu'il y a un champ affection à associer a mon formulaire principale. De plus je perd mes choix de sélection de tag (faut imaginer que j'en ai sélectionné bcp ^^). Apres ou est qu'on rajoute en DB l'association Article Form ? du coté du formulaire principale ? ou de actionclass.php du module ArticleTag. je suis un peu perdu si vous avez des idées, si j'ai fait fausse route ou pas, des exemples d'utilisation, je suis preneur. Merci d'avance Wind |
||||||||||||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Le plugin sfDoctrineActAsTaggablePlugin gère correctement les tag, plus d'information dans la salle plugin dans le sujet sur les plugins les plus utilisés
J'avoue que ton message est un peu long et demanderait à recréer, en local, les mêmes conditions que les tiennes pour pouvoir être utilisé, ce qui n'est pas possible (question de temps). J'ai l'impression qu'il faut que tu éclaircisses avant, et pour toi, ton schéma de qui fait quoi (humain et couches logiciels). Un petit schéma UML là pourrait t'aider à y voir plus claire. N'oublie pas la possibilité de travailler en mode dégrader (sans javascript) à éventuellement prendre en compte. Vu ton approche, je dirais que si c'est ajax qui affiche les tag, c'est ajax qui envoie les modifs. Attention à ce qui ce passe alors lors de la création d'un enregistrement (qui existe virtuellement à l'écran mais pas en base), tu ne peux sauvegarder de tag pour un enregistrement qui n'a pas été sauvegardé en base et tu dois sauvegarder les tag avant d'envoyer le form en validation... Il faut bien réfléchir avant de mettre ceci en œuvre.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : septembre 2007 Messages : 37 ![]() |
l'exemple des tags était bidon je n'utilise pas du tout des tags, j'ai juste essayé de traduire mon problème en un exemple simple, d'ou l'idée avec des articles et des tags.
J'ai donné pas mal de code juste pour avoir un aperçu de la méthode que j'essayai de mettre en place. Plus littéralement, j'aimerai faire apparaitre en ajax un sfWidgetFormSelectDoubleList dépendant d'un choix utilisateur, exemple je veux associer des tags à un article ou pas. Donc si je sélectionne "oui" à une association de tag, mon sfWidgetFormSelectDoubleList apparait. Ca c'est pour le coté fonctionnel. Coté DB c'est assez simple, on a une table Article, une table Tag (qui regroupe tous les tags possibles) et une table ArticleTag qui traduit l'association quant il y en a une oue plusieurs, exemple d'enregistrement: Article (id=1 nom='CD') Tag (id=1 nom='musique', id=2 nom='voiture') ArticleTag (id=1 article_id=1 tag_id=1) et étant débutant sur symfony je ne sais guère comment procéder de façon conventionnel. Wind |
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
J'ai du mal a suivre.
Tu dis : "l'exemple des tags était bidon..." soit, mais tu ne parles que de tag derrière... Regardes le fonctionnement du plugin. Démontes son code, tu devrais trouver des réponses. Mets au propre (au sens propre et au sens figuré) qui doit faire quoi dans ton interface idéale.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : septembre 2007 Messages : 37 ![]() |
Visiblement mon langage "sms" en déroute certain ...
J'ai une problématique qui n'a juste rien à voir avec des tags, j'ai essayé de transposer mon problème en un exemple simple pour qu'un maximum de gens puissent m'aider à "réflectionner" sur l'imbrication de formulaires dynamiquement, c'est tout. Merci tout de même à ton implication intensive pour faire vivre ce forum. Quant j'aurai suffisamment de vécu et de recul sur Symfony j'y participerai également. Wind |
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Pour gérer ce type de cas, tu as deux possibilités, une basée sur des forms généré en PHP et traités en PHP. Un peux comme celle utilisé par le plugin.
Cas PHP pure. Tu coches la case "je veux des tags" et valide le form. PHP réaffiche le form avec les widgets permettant de gérer les tags (si la liaison n-n entre la table article et tag est bien faîte, il n'y a presque rien à inventer, la génération s'occupe de presque tout (il faut choisir le type d'affichage) ). Avantage, à la création pas de problème, la case n'est pas cochée. Valider l'enregistrement va le sauvegarder avant d'afficher les choix, donc on travaillera toujours sur un enregistrement existant. Cas AJAX. Tu coches la case "je veux des tags". JS va créer (ou afficher) les zones de saisie. Le principe veux que, si les zones sont créer par JS, c'est JS qui prépare et envoie les données. Par contre, si elle sont pré préparée par le form et juste affichée par le code JS, elle peuvent être validées par le PHP qui les a créées. Reste le cas de zones créées par JS et validées par du PHP, ce n'est jamais l'idéal, même si, bien écris, cela peut marcher. C'est par contre très sensible aux moindres modifications futures.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com