Bonjour,
J'ai un formulaire permettant de créer une nouvelle participation pour un concours donné.
Dans mon contrôleur, j'ai donc une méthode qui me permet d'initialiser un objet Participation vierge lié au bon concours pour alimenter le formulaire. J'appelle ma méthode dans executeNew(), et dans executeCreate() (je fais ensuite un bind pour bind pour renseigner les valeurs entrées par l'utilisateur).
La méthode d'initialisation du formulaire grosso modo ressemble à ça :
1 2 3
| $participation = new Participation();
$participation->Concours = $concours;
$this->form = new ParticipationForm($participation); |
Jusqu'ici tout fonctionne parfaitement.
Sauf qu'une partitipation peut être lié à 1 ou plusieurs newsletters (à travers un sfWidgetFormDoctrineChoice). Ces champs newsletters doivent être pré-cochés par défaut.
J'ai donc rajouté tout simplement dans ma méthode d'initialisation :
$participation->Newsletters = $concours->Newsletters;
Mes checkbox sont bien pré-cochées. Sauf qu'à l'envoi du formulaire, aucun abonnement newsletter n'est mémorisé ... Pourtant tout à l'air correct dans la requête POST envoyé.
Pour corriger le problème, je pré-renseigne les newsletters seulement pour executeNew() et pas dans executeCreate().
Mais j'aimerais bien comprendre pourquoi cela ne fonctionne pas si je pré-renseigne aussi les newsletter dans executeCreate() ? Cela pose problème ensuite pour faire le bind ?
Merci d'avance pour vos lumières !
Partager