I need to create some forms non-linked to entities.
I pretty understood how create my builders, but when I try to use them, I am pretty confuse, and I don’t really find examples in the online doc of Symfony 2.0
To go into the details: I create a “Multiple choice question” form. So I created:
- a “class ResponseType extends AbstractType”
- a “class MCQType extends AbstractType”, which uses my class ResponseType
- a file “forms.html.twig”, which includes templates for my “responsetype_widget” and for my “mcqtype_widget”
My aim is to be able to customize the labels and play with them in this template (like add div with uniqueID, etc), specially the itemization when I add a new item: I would know how to change the “0”, “1”, “2”, etc in “Bad answer 1”, “Bad answer 2”, etc.
Currently, I do it with JQuery, in the client-side. But when I submit my form, and an error appears, my created items appear with the “0”, “1” ; generated by the server-side.
Here are screenshot to have a better view of the situation:
- Modified by JQuery (sorry not enought reputation to post images)
- Generated by Symfony 2
I really would customize these labels on the server-side, or in my “class MCQType extends AbstractType”, or from the mcqtype_widget in forms.html.twig
I tried a lot of stuff that I found in the doc, but nothing works and I feel desesperate to mofify that from the JS instead of the server-side.
Is somebody have a good example?
Thank you by advance. And if any good tutorial is realeased about manipulate collections, I would really help me!
What you need to do for customizing those labels is to redefine the template block to include your modification.
To do so, you’ll need this part of the documentation :
http://symfony.com/doc/2.0/cookbook/form/form_customization.html
I would also advise you to play with that in order to get familiar with the form collection :
http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/collections
Don’t hesitate to go deep inside to see how they are doing.
PS: if you need to hide those labels, you need to pass
'show_legend' => false,inside the field options