Formulaire Symfony2 collection: Index de l'objet en cours est indiqué
J'ai un problème avec l'affichage de la collection de mon formulaire.
Lors de l'affichage de mon entité collection, j'ai quelque chose comme ceci :
0
Name: myInputName
Address: myInputAddress
1
Name: myInputName
Address: myInputAddress
Ma question est pourquoi Symfony2 afficher le indice...
Et ce pour toutes les entités enregistrées dans ma collection...
Voici le code que j'utilise:
$builder
->add('person', 'collection', array(
'label' => ' ',
'type' => new PersonType(),
'prototype' => true,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
))
;
Dans mon fichier twig:
<div>
{{ form_widget(edit_form) }}
</div>
Aider s'il vous plaît
Sam
Vous devez vous connecter pour publier un commentaire.
Vous pouvez personnaliser le rendu de votre collection pour ne pas afficher l'index avec, par exemple:
La suppression des index (étiquettes) pour les articles de la collection:
Si vous souhaitez ajouter des étiquettes par ligne que vous pouvez produire vous-même le formulaire:
Note: testé sur Symfony 2.3 & 2.4
'entry_options'
au lieu de'options'
C'est il y a quelques jours, mais parce que j'ai été confronté à la même question pour Symfony 3 la réponse de sectus est la bonne.
Utiliser le
option à l'intérieur de votre constructeur pour cacher qu'il élément objet.
En Ce Qui Concerne Meilleur
Je sais que cela a été fermé pendant un certain temps. Et vous ne savez pas si cela a été résolu ailleurs. Ce problème est en fait assez simple à résoudre, et je suis surpris il n'y a pas de documentation sur ce, n'importe où. Dans le PersonType ou de tout autre type, qui est utilisé dans les collections de modifier juste le vars['nom'] dans le buildView à ce que vous souhaitez afficher en tant qu'étiquette.
Si vous le souhaitez dynamique, vous devez utiliser l'objet en forme->getData(). Depuis, dans mon problème, je suis en utilisant un thème de formulaire, en remplaçant la brindille n'est pas vraiment une option pour moi.
Espère que cela aide quelqu'un.
$form->vars['name'] = 'Foo bar baz';
$view->vars['name']
À l'aide de @MrBandersnatch la solution ci-dessous, j'ai dû utiliser
$view->vars['name']
au lieu de$this->vars['name']
(Symfony 2.3).(toutes mes excuses pour ne pas ajouter cela comme un commentaire sur @MrBandersnatch de réponse, je n'ai pas eu assez de réputation encore).