|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() |
Salut,
Dans mon application, je peux saisir des cours qui ont une date de début et une date de fin et des sessions qui sont rattachées à des cours avec aussi une date de début et une date de fin. La date de début d'une session doit être antérieure à sa date de fin. La plage définie par la date de début et la date de fin d'une session doit se trouver à l'intérieur de la plage définie par la date de début et la date de fin du cours (dont l'id figure dans un champs du formulaire). Ensuite je devrais aussi vérifier que les sessions ne se chevauchent pas mais pour l'instant, restons-en là. J'ai étudié la documentation mais je ne sais pas trop comment démarrer, entre une méthode définie comme callback dans le postvalidator ou un validator personnalisé et j'ai du mal à trouver des exemples. Merci d'avance pour vos conseils PS pour la première contrainte, j'ai fait ça et ça marche bien : Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() |
Qqun aurait un exemple de validation d'un champs pour qu'il satisfasse à deux contraintes liées à des autres champs voir à des autres tables de la BDD ?
Merci d'avance |
|
|
00
|
|
|
#3 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je ne comprend pas ce que tu veux pour la deuxième contrainte.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() |
Un cours est composé de sessions. Lorsqu'on saisit une session, il faut valider qu'elle ne chevauche pas une session déjà existante.
Par exemple, pour un cours intitulé "introduction à la mécanique" pour lequel on saisirait une première session du 10 mai à 10h au 14 mai à 18h, il ne faudrait pas qu'on puisse saisir une deuxième session du 13 mai à 10h au 20 mai à 18h. Le validateur devra donc récupérer les sessions existantes pour le cours et vérifier que la date de début de la session en cours de saisie n'est pas comprise dans une plage définie par une session déjà existante pour le même cours. Du point de vue de l'algorythmie et de l'interaction avec doctrine, je m'en sortirai mais je ne sais pas comment intégrer ça proprement à symfony sous forme de validateur. Merci pour ton aide |
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Intéressant.
Et c'est très proche d'un validateur qu'il faut que je mette en place aussi. Il faut créer un validateur sur le modèle de sfValidatorSchemaCompare qui sera un enfant de sfValidatorSchema. On récupère donc dans la méthode doClean() le tableau des valeurs du form (récupérées par le bind). Il reste à faire appel à une méthode de l'objet du modèle qui vérifiera s'il y a chevauchement et, si oui, retournera un false qui pourra générer, dans le validateur, l’interruption pour l'erreur. Dans l'idée ce pourrait être cela, qu'en penses tu ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() |
Je pense que oui. J'espérais trouver un exemple mais avec ce que tu dis je devrais pouvoir me débrouiller pour essayer.
Pour l'instant je dois laisser ça de coté mais dès que je fais un test je le partage ici. |
|
|
00
|
|
|
#7 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Si j'arrive dessus avant, je partage aussi
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#8 | ||||
|
Membre du Club
![]() |
Ce fut laborieux mais ça à l'air de marcher :
SessionForm.class.php : Code :
Code :
|
||||
|
|
00
|
|
|
#9 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
C'est pas top.
La requête ne peut faire partie du validateur. Ceci le limite drastiquement à ce cas très précis. En fait, il faudrait prévoir une options pour récupérer le nom du modèle et une pour la méthode du modèle qui retournera les données a tester. Ceci permettra alors un bon fonctionnement de la chose et sur tous les modèles de données envisageable. J'ai pris du retard sur du dessin en svg, mais j'arrive doucement à cette partie du développement.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com