LordSpock a raison. D'ailleurs on ne voit pas l'image qui montre comment tu veux afficher tes données. Formulaire ou juste un display data?
Pour ma part, quand je souhaite afficher mes données de ManyToMany, dans un tableau HTML dans twig par exemple je procède comme ceci:
admettons que j'ai une entité batiments.php, une entité typesactivite.php, relié par une relation ManyToMany. En gros cela veut dire qu'un batiment peut avoir plusieurs types d'activité et vice versa. Dans une base de données MySQL par exemple, j'aurai une table de pivot. Avec Doctrine riaosnne en objet, tout en gardant en tête cette notion de table de pivot sans pour autant s'axer que sur cette logique.
Dans un controller j'appelle mon entité batiment:
public function indexAction() {
$em=$this->getDoctrine()->getManager();
$bat = $em->getRepository('MySpaceMyBundle:Batiments')->findAll();
return $this->render('MySpaceMyBundle:Batiments:index.html.twig', array('batiments' => $bat ));
}
dans ma twig je veux faire apparaître un tableau où certains champs de mon entité vont être affichées:
<table>
<thead>
<tr>
<th>Ref</th>
<th>Type Activité(s)</th>
<th>Nom du Bâtiment</th>
</tr>
</thead>
<tbody>
{% for batiment in batiments %}
<tr>
<td>{{ batiment.reference }}</td>
<td>
{% for batiment in batiment.typesactivite %}
{{ batiment.type }}
<br>
{% endfor %}
</td>
<td>{{ batiment.nom }}</td>
</tr>
{% endfor %}
</tbody>
</table>
J'ai bien espacé lors de l'appel pour typesactivité pour que tu comprennes. En fait il faut faire une loop, car pour chaque batiment il y a 0 ou plusieurs résultats, c'est donc un tableau.
batiments.php ->ManyToMany<-typesactivite.php: en toute logique si ton model est bien construit tu dois avoir la variable étrangère dans chaque entité. Pour avoir accès sur le champ type de mon entité typesactivite.php je fais une boucle for sur batiments.typesactivite pour avoir le champs type et donc tous les types liées à mon batiments. J'espère t'avoir aidé. N'oublie pas dans chaque entités tu dois avoir la fonction __toString())
Enfin pour ton formulaire si tu veux changer l'attribut css ou html de ton champ tu peux rajouter quelque chose comme ça afin d'avoir ce que tu souhaites:
<div>
{{ form_label(form.batiments, "Appartenant au bâtiment:", {'label_attr': {'class': 'control-label'}}) }}
{{ form_errors(form.batiments) }}
{{ form_widget(form.batiments, {'attr': {'class': 'form-control'}}) }}
</div>
Comme tu peux le voir j'ai mis la classe form-control de bootstrap sur mon champ du formulaire bâtiments qui me renvoit une liste déroulante où apparaît tous les noms de mes bâtiments.