Bonjour à tous,

Je débute sur Symfony2 et me confronte à un problème depuis plusieurs jours que je n'arrive pas à résoudre. Je génère un formulaire composé simplement d'une liste à puce de deux éléments. Il s'agit de voter pour une personne ou une autre, les deux éléments étant deux tuples de la base de données sélectionnés aléatoirement. Toutefois, à la soumission du formulaire, j'ai parfois (et là aussi c'est très aléatoire...) une erreur du type TransformationFailedException.

N'arrivant pas à isoler les cas provoquant cette erreur, je m'en réfère à vous, en espérant que vous saurez m'aider.

Voici le code impliqué

La méthode du controller :
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
 
public function versusAction(Request $request) {
        $session = $request->getSession();
 
        $retour = array();
        $retour["joueurs"] = array();
 
        $em = $this->getDoctrine()->getManager();
        $joueurs = $em->getRepository('LGELmashBundle:Joueur')->findRandomEligibleJoueurs(2);
 
        $categorie = $em->getRepository('LGELmashBundle:Categorie')->findAll();
        shuffle($categorie);
        $retour["categorie"] = $categorie[0];
 
        $form = $this->createFormBuilder()
            ->add('vote', 'choice', array(
                'choices'           => array(
                    $joueurs[0]->getId() => "" . $joueurs[0]->getPseudo() . " (" .  $joueurs[0]->getId() .")",
                    $joueurs[1]->getId() => "" . $joueurs[1]->getPseudo() . " (" .  $joueurs[1]->getId() .")",
                ),
                'expanded'          => true,
                'multiple'          => false,
                'required'          => true,
                'label'             => ' ',
                'invalid_message'   => "Votre choix ne figure pas parmi les choix possibles."
            ))
            ->add('categorie', 'hidden', array( 'data' => $retour["categorie"]->getId() ) )
            ->add('submit', 'submit', array('label' => 'Voter') )
            ->getForm();
 
        $form->handleRequest($request);
 
        if ($form->isValid()) {
            $choix_1    = $session->get("vote")[0];
            $choix_2    = $session->get("vote")[1];
            $categorie  = $form->get("categorie")->getData();
            $vote       = $form->get("vote")->getData();
            etc...
        }
        // Update elo score in database
        $joueur_1->findClassement($categorie)->setElo($elo_joueur_1);
        $joueur_2->findClassement($categorie)->setElo($elo_joueur_2);
 
        $session->getFlashBag()->add(
            'success',
            'Votre vote a été pris en compte! Il vous reste n jetons de vote.'
        );
}
La vue : (même si à priori, ça ne sert pas à grand chose je pense...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
{% extends 'base.html.twig' %}
 
{% block body %}
    <h1>Versus</h1>
 
    {{ form_start(form) }}
    {{ categorie.question }}
    {{ form_widget(form) }}
    {{ form_end(form) }}
 
    <a href="" class="btn btn-primary">Passer</a>
 
{% endblock %}
L'erreur que j'obtiens à la soumission du formulaire implique la liste de choix (liste à puce donc). Je comprend très bien son origine, puisqu'elle est spécifiée dans le profiler Symfony.

Submitted Data

View Format 3
Normalized Format null
Model Format same as normalized forma

alors que je m'attend au submit suivant :

Submitted Data

View Format 0 => true, 1 => false
Normalized Format <id d'un membre>
Model Format same as normalized forma

Je ne comprend simplement pas d'où provient la différence entre ces deux soumissions de formulaire. Je vous remercie par avance pour votre aide :]