Validation d'un formulaire && TransformationFailedException
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:
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:
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 :]