Bonjour,
Je me retrouve face à un problème un peu épineux.
Je dois gérer la gestion de dons en ligne selon deux fréquences: une fois, ou chaque mois.
Dans ma bdd, j'ai une table don, avec montant_libre, montant_choix, donateur_id, frequence_id.
Cette table est reliée à une table fréquence, bien sûr (ponctuel / mensuel) et à la table des donateurs.
Actuellement, j'ai contourné mon problème d'une façon qui ne satisfait pas le client. J'ai créé deux boutons: "je donne une fois", "je donne chaque mois", et quand on clique sur l'un des deux, on a le formulaire adéquat avec les montants proposés adéquats (qui sont différents selon la fréquence)
On remplit le formulaire, le valide, et on est redirigé vers une page qui nous demande de cliquer sur un bouton paypal qui gère le don ponctuel ou mensuel.
MAIS le client ne veut pas de ces deux boutons de fréquence. Il veut qu'on ait les deux grilles côte à côte avec un entête "je donne une fois" / "je donne chaque mois".
Au départ, naïvement, j'ai juxtaposé les deux formulaires avec les deux boutons de validation. Bien évidemment, comme l'autre formulaire n'était pas rempli, j'ai eu des messages d'erreur "required".
Ensuite, j'ai tenté de ne faire qu'un seul formulaire, mais je me suis alors retrouvé avec mes champs en double.
En effet, mon formulaire est alors celui-ci:
La raison des if(isset(...)), c'est parce que symfony me disait que les valeurs étaient inconnues, comme je ne remplissais que la moitié 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
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
90
91
92
93
94
95
96
97 <form action="<?php echo url_for('donationTest/createDon') ?>" method="POST"> <fieldset> <div class="form-row"> <?php if (isset($formDonPonctuel['montant_choix'])): ?> <b><?php echo $formDonPonctuel['montant_choix']->renderLabel('Montant: ') ?></b> <br/> <?php echo $formDonPonctuel['montant_choix']->render() ?> <div class ="form-field-errors"> <?php echo $formDonPonctuel['montant_choix']->renderError() ?> </div> </div> <?php endif; ?> <div class="form-row"> <?php if (isset($formDonPonctuel['montant_libre'])): ?> <b><?php echo $formDonPonctuel['montant_libre']->renderLabel('Montant libre: ') ?></b> <br/> <?php echo $formDonPonctuel['montant_libre']->render() ?> <div class ="form-field-errors"> <?php echo $formDonPonctuel['montant_libre']->renderError() ?> </div> <?php endif; ?> </div> <div class="form-row"> <?php if (isset($formDonPonctuel['frequence_don_id'])): ?> <b><?php echo $formDonPonctuel['frequence_don_id']->renderLabel('Fréquence: ') ?></b> <br/> <?php echo $formDonPonctuel['frequence_don_id']->render() ?> <div class ="form-field-errors"> <?php echo $formDonPonctuel['frequence_don_id']->renderError() ?> </div> <?php endif; ?> </div> </fieldset> <br/> <fieldset> <div class="form-row"> <?php if (isset($formDonMensuel['montant_choix'])): ?> <b><?php echo $formDonMensuel['montant_choix']->renderLabel('Montant: ') ?></b> <br/> <?php echo $formDonMensuel['montant_choix']->render() ?> <div class ="form-field-errors"> <?php echo $formDonMensuel['montant_choix']->renderError() ?> </div> <?php endif; ?> </div> <div class="form-row"> <?php if (isset($formDonMensuel['montant_libre'])): ?> <b><?php echo $formDonMensuel['montant_libre']->renderLabel('Montant libre: ') ?></b> <br/> <?php echo $formDonMensuel['montant_libre']->render() ?> <div class ="form-field-errors"> <?php echo $formDonMensuel['montant_libre']->renderError() ?> </div> <?php endif; ?> </div> <div class="form-row"> <?php if (isset($formDonMensuel['frequence_don_id'])): ?> <b><?php echo $formDonMensuel['frequence_don_id']->renderLabel('Fréquence: ') ?></b> <br/> <?php echo $formDonMensuel['frequence_don_id']->render() ?> <div class ="form-field-errors"> <?php echo $formDonMensuel['frequence_don_id']->renderError() ?> </div> <?php endif; ?> </div> </fieldset> <?php if (isset($formDonponctuel['id'])): ?> <?php echo $formDonPonctuel->renderHiddenFields() ?> <?php endif; ?> <?php if (isset($formDonMensuel['id'])): ?> <?php echo $formDonMensuel->renderHiddenFields() ?> <?php endif; ?> <br/> <div> <button type="submit"> Procéder au paiement </button> </div> </form>
A présent, deux soucis:
- les champs sont en double, car j'ai deux champs don[montant_libre], deux champs don[montant_choix], et surtout deux champs don[frequence_don_id] !
- quand je remplis une partie du formulaire, c'est le second don[frequence_don_id] qui est pris en compte, à savoir "je donne chaque mois".
Du coup, je tourne en rond... les valeurs des montants proposés sont différentes selon la fréquence de donation, ce qui fait que je ne peux proposer une seule grille... par contre, il y a sûrement un moyen pour n'avoir qu'un champ don[montant_libre], mais c'est la transmission de l'information de la fréquence qui me pose problème...
Je vais bien sûr continuer à chercher, mais si quelqu'un a rencontré ce type de problème, je ne serais pas contre une suggestion.
Merci par avance et désolé de ce long post!
Johnny
Partager