Bonjour à tous !

Voilà quelque jours que je m’attelle à créer un site en Symfony 2.8 et je rencontre un problème d'affichage de formulaire (je sais, je me répète :p). J'ai déjà cherché dans la doc afin de créer un formulaire adapté à mon besoin mais quelque chose cloche et je n'arrive pas à mettre le doigt dessus.

Voici mon code pour le formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
<form id="form_ouvrage" action="" method="post" {{ form_enctype(form) }}>
{{ form_widget(form._token) }}
    <div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.titreOuvrage)}}</span>
{{ form_errors(form.titreOuvrage) }}
            {{ form_widget(form.titreOuvrage) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.resumeOuvrage)}}</span>
{{ form_errors(form.resumeOuvrage) }}
            {{ form_widget(form.resumeOuvrage) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.auteur) }}</span>
{{ form_errors(form.auteur) }}
            {{ form_widget(form.auteur) }}
            <ul id="auteurs_list" data-prototype="{{ form_widget(form.auteur.vars.prototype)|e }}">
{% for auteur in form.auteur %}
                    <li>
{{ form_errors(auteur) }}
                        {{ form_widget(auteur) }}
                    </li>
{% endfor %}
            </ul>
 <a id="add_new_auteur" class="btn" href="#">Ajouter un auteur</a>
 </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.editeur)}}</span>
{{ form_errors(form.editeur) }}
            {{ form_widget(form.editeur) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.etat)}}</span>
{{ form_errors(form.etat) }}
            {{ form_widget(form.etat) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.categorie)}}</span>
{{ form_errors(form.categorie) }}
            {{ form_widget(form.categorie) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.genre)}}</span>
{{ form_errors(form.genre) }}
            {{ form_widget(form.genre) }}
        </div>
 <div class="form-group">
 <span class="label-lg">{{ form_label(form.photosOuvrageFile)}}</span>
{{ form_errors(form.photosOuvrageFile) }}
            {{ form_widget(form.photosOuvrageFile) }}
        </div>
 </div>
 <input class="btn btn_valide_ajout_ouvrage pull-right" type="submit" value="Valider">
</form>
 
<script>
var auteurCount = {{ form.auteur | length }}
 
    $(function(){
        $('#auteurs_list').find('li').each(function() {
            addAuteurFormDeleteLink($(this));
});
 
$("#add_new_auteur").click(function(e){
            e.preventDefault();
var AuteurList = $('#auteurs_list');
 
// Parcourt le template prototype
var newWidget = AuteurList.attr('data-prototype');
newWidget = newWidget.replace(/__name__/g,tagCount);
auteurCount++;
var newLi = $('<li></li>').html(newWidget);
newLi.appendTo($('#auteurs_list'));
return false;
})
 
    });
 
function addAuteurFormDeleteLink($auteurFormLi) {
        var $removeFormA = $('<a class="btn" href=#">Supprimer cet auteur</a>');
$auteurFormLi.append($removeFormA);
$removeFormA.on('click',function (e) {
            e.preventDefault();
$auteurFormLi.remove();
})
    }
</script>
Voici mon code pour le formulaire ouvrageEchange :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
class OuvragesEchangesType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
 {
$builder->add('titreOuvrage',TextType::class,array('label'=>'Nom de l\'ouvrage','attr'=>array('class'=>'form-control')))
 ->add('resumeOuvrage',TextareaType::class,array('label'=>'Résumé de l\'ouvrage','attr'=>array('class'=>'form-control')))
 ->add('auteur',CollectionType::class,array('entry_type'=>AuteursType::class,'allow_add'=>true,'allow_delete'=>true))
 ->add('editeur',EntityType::class,array('label'=>'Sélectionnez l\'éditeur','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Editeurs','choice_label'=>'libelle_editeur'))
 ->add('etat',EntityType::class,array('label'=>'Cochez l\'état dans lequel se trouve votre ouvrage','class'=>'SB\MainBundle\Entity\EtatsOuvrages','choice_label'=>'libelle_etat','expanded'=>true))
 ->add('categorie',EntityType::class,array('label'=>'Selectionnez une catégorie','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Categories','choice_label'=>'libelle_categorie'))
 ->add('genre',EntityType::class,array('label'=>'Cochez un ou plusieurs genre','class'=>'SB\MainBundle\Entity\Genres','choice_label'=>'libelle_genre','multiple'=>true,'expanded'=>true))
//->add('photosOuvragePath')
->add('photosOuvrageFile',FileType::class,array('label'=>'Ajouter des photos'))
;
}
Le code pour le formulaire Auteurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class AuteursType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
 {
$builder
->add('nomAuteur',TextType::class,array('label'=>'Entrez le nom du ou des auteurs','attr'=>array('class'=>'form-control')));
}
Et le code du contrôleur pour l'affichage du formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
public function createNewOuvrageEchangeAction(Request $request){
$user = $this->get('security.token_storage')->getToken()->getUser();
$ouvrage = new OuvragesEchanges($user);
 
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(OuvragesEchangesType::class,$ouvrage);
$formHandler = new FormHandler($request,$em,$form);
//si validation du formulaire et données >> ok !
if ($formHandler->process()){
return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
}
 
$datas = array('form'=>$form->createView());
return $this->render('SBMainBundle:Main:createEchange.html.twig',$datas);
}

Merci de votre aide !!!