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 :
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
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.' ); }
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.
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 %}
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 :]
Partager