Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2011, 12h22   #1
Membre à l'essai
 
Inscription : mars 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 159
Points : 24
Points : 24
Par défaut setPostValidator seulement si le form est valide

Bonjour,

Je voulais savoir si c'est normal que l'on rentre dans le "setPostValidator" même si les "validators" des champs ne sont pas bon.

En gros est il possible de rentrer dans le "setPostValidator" seulement si tous les champs sont ok ?
Ou alors est il possible de tester dans le "setPostValidator" si le form est valide ou non.

Merci d'avance
coupolites est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 15h14   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Dans le déroulement d'un form, il est prévu de tester tous les validateurs avant de renvoyer le formulaire à l'utilisateur.

Je ne connais pas de manière simple de ne pas tous les valider.

Vu qu'ils sont déclaré dans des collections, il n'est pas possible de jouer au niveau de configure (ou setup) pour mettre un code conditionnelle qui sera exécuté avant les premiers réels tests de validation.

La seul possibilité éventuelle que je vois serait de créer un validateur dans l'idée du sfValidatorAnd et de conditionner l'exécution des validateurs inclus à ce que l'objet parent (le form) soit ou non valide. La où j'ai des doutes, c'est sur la possibilité de connaître facilement l'état de la validation d'un formulaire depuis un validateur... A voir...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 08h23   #3
Membre à l'essai
 
Inscription : mars 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 159
Points : 24
Points : 24
Merci pour la réponse

Ce qui est gênant ici c'est que pour un même champ je vais avoir 2 messages d'erreurs :

1/ celui de mon validateur classique
2/ celui de mon postvalidateur
coupolites est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 10h51   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
S'il s'agit de deux erreurs différentes, je ne vois pas où est le problème, c'est des choses qui arrivent régulièrement.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 10h59   #5
Membre à l'essai
 
Inscription : mars 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 159
Points : 24
Points : 24
De plus dans le postValidator je fait appel à un webervice. Donc même si le champ est incorrect je fais cet appel.

Dans ce cas je dois donc doubler ma vérification ou alors je dois supprimer le premier validator
coupolites est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h28   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu vérifies deux choses différentes, ce qui peut entraîner deux messages d'erreur.

Si l'utilisateur se trompe, il voit les deux messages d'erreur et sait qu'il a deux contraintes à vérifier. Dans le cas contraire, le risque est qu'il corrige la première contrainte avant d'avoir une deuxième erreur et donc une deuxième modification à mettre en œuvre. Personnellement, c'est le genre de truc qui me fait quitter un site. Deux, si je suis de bonne humeur, cela va, trois emboitées les unes dans les autres, je me tires... Mais je suis un mauvais client.

Par contre, l’inconvénient est l'appel au web service qui peut être gourmand. Mais d'un autre côté, pour valider le form, même si l'erreur est sur un autre champ, tu feras appel au web service à tous les coups...

Question, ton postValidateur ne porte que sur un champ ? Si oui, quel est l'intérêt de le mettre en postValidateur ? Pourquoi ne pas faire un sfValidatorAnd dans le validateur du champ ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 10h48   #7
Membre à l'essai
 
Inscription : mars 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 159
Points : 24
Points : 24
En effet je n'ai pas besoin d'un postvalidator dans mon cas

Merci

ps : Ce qui reste dommage pour moi avec les postvalidator c'est qu'ils sont appelé même si le form est invalide. Car si on utilise des traitements lourds (ws ou autre ...), on les appels un peu dans le vent
coupolites est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h58   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Serte,

Mais les post validateurs ne sont pas créé pour permettre un traitement lourd, il sont créé pour permettre de valider des données qui impliquent plusieurs champs (mot de passe et vérification, date début et date fin).

Pour cela ils sont idéal et créé pour.

Il n'est pas simple de contraindre une fonctionnalité à faire quelque chose pour lequel elle n'a pas été conçue.

Après, l'idéal serait de créer un postValidation qui s'intégrerait après la postValidation, si la validation est viable. Ceci revient à modifier le code du sfFormWeb et à le dupliquer entièrement. Ce qui n'est pas idéal en cas de modification de l'objet dans une version future mais ne devrait pas poser beaucoup de problème quant à la mise en oeuvre. Enfin, vu de loin, je n'ai pas démonté le code non plus !
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h24.


 
 
 
 
Partenaires

Hébergement Web