IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Besoin d'aide pour créer un validateur personnalisé


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    lr
    lr est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Par défaut Besoin d'aide pour créer un validateur personnalisé
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $this->validatorSchema->setPostValidator(
    			new sfValidatorSchemaCompare('datedebut', sfValidatorSchemaCompare::LESS_THAN_EQUAL, 'datefin',
    				array(),
    				array('invalid' => 'La date de début ("%left_field%") doit être antérieure à la date de fin ("%right_field%")')
    			)
    		);

  2. #2
    lr
    lr est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Par défaut
    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

  3. #3
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je ne comprend pas ce que tu veux pour la deuxième contrainte.

  4. #4
    lr
    lr est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Par défaut
    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

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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 ?

  6. #6
    lr
    lr est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Par défaut
    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.

Discussions similaires

  1. Besoin d'aide pour créer une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 44
    Dernier message: 26/05/2008, 11h08
  2. Besoin d'aide pour créer une BD
    Par desfrags dans le forum Débuter
    Réponses: 6
    Dernier message: 30/01/2008, 22h20
  3. Besoin d'aide pour créer un .reg sous Vista
    Par Silverscott dans le forum Windows Vista
    Réponses: 3
    Dernier message: 25/07/2007, 14h09
  4. On a besoin d'aide pour créer un site de soirée électorale
    Par pliporte75 dans le forum Administration
    Réponses: 2
    Dernier message: 01/04/2007, 18h02
  5. besoin d'aide pour créer un uml
    Par bob75018 dans le forum UML
    Réponses: 9
    Dernier message: 11/03/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo