Bonjour,
Comment faire pour ne pas afficher les champs des objets sous-jacents déjà existants, dans une collection form ?
Ce que je ne veux pas : voir pj1
Ce que je veux : voir pj2
Merci
Bonjour,
Comment faire pour ne pas afficher les champs des objets sous-jacents déjà existants, dans une collection form ?
Ce que je ne veux pas : voir pj1
Ce que je veux : voir pj2
Merci
Pourquoi ne pas masquer les formulaires des objets existants dans la vue ?
Je pense qu'il est indispensable que ces éléments soient présent dans le <form> quand tu soumettras ton formulaire pour éviter qu'une collection incomplète n'écrase la précédente.
Ou alors, deuxième cas de figure : si tu n'ajoutes tes éléments à ta collection que un par un, tu aurais plus vite fait de faire un formulaire se basant sur un nouvel élément de la collection en assignant toi même le parent.
Salut Nico_F,
Merci de ta réponse.
Je veux bien, mais concrètement comment on faittu aurais plus vite fait de faire un formulaire se basant sur un nouvel élément de la collection en assignant toi même le parent.? Est-ce que tu peux expliciter un peu plus ou me montrer un exemple qui se rapproche ? Merci.
Concrètement au lieu de faire un formulaire de l'entité A possédant une collection de B, tu fais juste un formulaire de B.
Tu peux configurer ton formulaire de manière à avoir une liste de choix sur l'entité A (le parent). Ou bien tu l'assignes toi même dans ton contrôleur, après avoir récupérer le formulaire et l'avoir bindé à ton objet B. juste avant ton persist(), il te suffit de faire quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // $objA = ... récupère ton objet A comme tu veux, par id en faisant une requête... $objB->setA($objA); $entityManager->persist($objB);
Salut Nico_F,
Merci de ta réponse.
Comme tu pourra le constater sur les pj suivantes il s'agit en fait de champs file (contrairement à ce que j'avais mis dans les pj du premier post, pour simplifier j'avais illustré mon propos avec des champs text simple, mais de toute façon ça revient au même).
J'ai essayé ta solution et ça fonctionne bien avec un seul champ voir pj1 (le fichier s'ajoute bien au autres fichiers de l'arrayCollection) mais je n'arrive pas à la faire fonctionner avec une collection de champs : J'obtiens bien la vue voir pj2 (c'est ce que je voudrais obtenir) mais lorsque j'envoie le formulaire ça me retourne cette erreur voir pj3, à ton avis à quoi peut-être dut ce type d'erreur ? je comprend que ça vient du mapping mais le mapping de quoi exactement, je ne comprend pas bien.
Pour reprendre ton exemple, j'ai en fait : entitéA : Categorie, entitéB : Fichier (relation OneToMany Bidirectionnelle)
Merci.
Je ne trouve pas très naturel d'ajouter à la collection d'un objet une autre collection qui n'y est pas rattachée. Soit tu ajoutes un seul élément et tu lui dis qui est le parent, soit tu prends la collection toute entière et tu l'édites en ajoutant autant d'éléments nouveaux que tu souhaites.
Rajouter plusieurs éléments à une collection revient à éditer la collection, ce qui veut dire que tous les éléments de ta collection devront être présents dans le formulaire. Mais rien ne t’empêche de les cacher coté vue. Donc je te suggérerais plutôt de partir sur un formulaire de collection si tu veux en ajouter plusieurs à la fois et de masquer ce que tu ne veux pas voir, en CSS par exemple.
Pour ton erreur je pense que le code de ton FormType et celui du traitement du formulaire permettraient d'identifier plus facilement ce qui coince.
Partager