|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
Bonjour à tous,
Je suis nouveau en php et donc symfony, actuellement je suis sur un projet et je souhaite dans mon filtreform effectuer une validation d'un champ qui dépends de la présence d'un deuxième (autre) champ ou d'un troisième (autre) champ : en gros en exécute le filtre sur le 1er champ si et seulement si le 2ème champ est présent et valide ou si et seulement si le 3ème champ est présent et valide. Merci d'avance pour votre aide! |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : juin 2006 Messages : 488 ![]() |
je ne croit pas que cela soit possible.
De toute, c'est plus un comportement JavaScript que PHP. |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Si c'est possible : il faut utiliser un postValidator.
Voir un exemple dans ce tuto : http://www.symfony-project.org/more-...l_objet_sfform |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : juin 2006 Messages : 488 ![]() |
oui mais dans ce cas il faut valider a chaque fois non ?
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
Merci pour vos réponses!
Effectivement c'est avec un postValidateur que l'on fait cela. J'ai bien créée un et l'avais déclarer comme suite : $this->validatorSchema->setPostValidator(new sfMonValidatorFilterSchema()); puis j'ai créée une sfMonValidatorFilterSchema.class.php dan ../lib mon problème actuellement c'est que dans la méthode doClean($values) j'arrive à récupérer certaines valeur que j'ai rentré(taper) dans le filtre et les affiché dans les log mais d'autre je récupère un Array alors qu'elles sont bien de simples string et je n'arrive pas à récupérer leur valeur????? Sachant que dans mon filtrForm j'ai surchargé la méthode "addNomFieldColumnQuery($query, $field, $values)" et là aussi la valeur "$values" doit être normalement la même que celle entrée dans le filtre (form) et de cette manière ($values['text']) mais la encore je ne récupère une 'A' de type Array??????? comme je suis nouveau dans symfony je me dis que ça doit avoir relation avec les validateurs? Merci d'avance pour vos répenses Bonne Année à tous! |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
COUCOU....... il y a quelqu'un!!!!!!
|
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Je n'ai rien compris à ta question.
Si tu peux nous la refaire avec des extraits de code pour être plus précis, on y verra peut-être plus clair |
|
|
00
|
|
|
#8 | ||||||||
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
Merci herode pour votre réactivité
![]() En fait, j'ai 2 problèmes que je croix sont liés enfin le 2eme pn qui dépend du 1er, je m'explique: le problème N°1 : J'ai un sfFilterForm avec champs tous des string puis j'ai ajouter un nouveau champ de type text (string) comme ça Code :
et pour que ce nouveau champ soit impliqué dans le filtrage j'ai ajouter une méthode dans mon sfFilterForm comme suite Code :
quand je vérifie son type je trouve que c'est un Array alors que dans le filterForm c'est une string???? le 2eme problème et lié au postValidator (j'ai bien suivis le tuto que vous m'aviez passer en haut ==> http://www.symfony-project.org/more-...Advanced-Forms) que j'ai ajouté (déclarer) pour vérifier l’existence du nouveau champ myField dans le filterForm et un autre champ du même filterForm comme suite : Code :
$this->validatorSchema->setPostValidator(new sfValidatorMyFilterSchema()); son code resemble à ça : Code :
ici et en fonction de l'itération $key=myField puis $key=field2 et $valeur1=la valeur entrée dans le champ myField $valeur2=la valeur entrée dans le champ field2 le problème ici est le même que le problème 1 càd $valeur1=A est de type Code :
|
||||||||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
juste une petite précision sur les valeurs dans la classe en bas dans la boucle foreach($values as $key => $value) {
$valeur1=$value //la valeur entrée dans le champ myField $valeur2=$value //la valeur entrée dans le champ field2 } Cordialement! |
|
|
00
|
|
|
#10 | |
|
Membre chevronné
![]() |
Citation:
Tout d'abord, pourrais tu utiliser la balise code pour le code s'il te plait. Ca sera plus agréable pour nous tous de lire tes post (en pj le screenshot qui te mon ou tu dois cliquer). Ensuite ton foreach c'est pas correcte, la tu tes valeurs $valeur1 et $valeur2 auront toujours la même valeur. |
|
|
|
00
|
|
|
#11 | ||||
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
Désolé je n'ai pas l'habitude sur les forums! merci encore une fois.
le problème N°1 : J'ai un sfFilterForm avec des champs tous des string puis j'ai ajouter un nouveau champ de type text (string), voici le code : Code :
pour que le filtrage avec ce nouveau champ fonctionne j'ai dû ajouter une méthode dans mon sfFilterForm comme suite Code :
quand je fais le test dans mon filterForm et je tapes une string par exemple "Bonne Année" $values['text'] contient un seul caractère A et non "Bonne Année" quand je vérifie son type je trouve que c'est un Array alors que myField est déclaré comme une string???? Bizzard non!!!!! |
||||
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() |
Déjà il y a un truc qui ne vas pas tu fais une recherche avec le alors que tu as déclaré un champs myField.
C'est uniquement avec le meme noms que tu pourras trouvé ta valeur. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
la syntaxe est bien correcte je me suis inspiré de la doc de symfony, d'ailleurs un moment donnée ce code marche bien et
récupère bien la string entrée dans le chap myField. seulement un moment donnée il y a une régression de mon code et là je ne sais pourquoi ce même code $ récupère juste un caractère A |
|
|
00
|
|
|
#14 |
|
Membre chevronné
![]() |
tu peux mettre le lien de la doc symfony que tu t'es inspire ?
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
en fait ce n'était pas de la doc symfony pardon mes un autre forum en en
http://oldforum.symfony-project.org/...uery#msg_91671 tu trouveras dans le dernier poste tous le code si tu as une autre façon de faire je suis preneur Merci!! |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
de plus ce qui est étonnant quand je tapes rien dans le filterForm et je l'envoie vide
la méthode est appelée par symfony est prend la valeur Array ce qui n'est pas normal!!!!!!! cette méthode ne devrait pas être appelée si on met rien dans myField....... |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
Merci à tous!
J'ai résolu le problème ![]() en fait un truc tout bête dans le code de mon filtreForm faut faire les déclarations de widgetSchema puis après les validateur correspondant sinon le code était belle est bien correcte |
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
En fait le problème vient du validateur du widget myFild qui reçoit une string...
le validateur de string prédéfinit de symfony me renvoie la lettre A et ce quoi que je rentre dans le champ myFild!!!! bizzard!!!! du coup ce que j'ai fais solution radicale pas de validateur pour ce champ myField et oui je l'ai mi en commentaire... et là je reçoit bien la valeur que rentre dans ce champ... La question est cependant toujours ouverte pourquoi le validateur de string me renvoie la lettre A?????? |
|
|
00
|
|
|
#19 | ||
|
Membre habitué
![]() Inscription : juin 2006 Messages : 488 ![]() |
j'ai pas tout relue, mais j'ai eu le même cas: http://www.developpez.net/forums/d10...eter-is_empty/
En faite sfWidgetFormFilterInput ne renvoie pas un string mais un array. Array[is_empty] array[text]. donc dans un premier temps j'avais bypassé le problème en utilisant le validateur sfValidatorPass. ensuite dans ton Code :
|
||
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 82 ![]() |
c'est ce que j'ai fait pour l'instant j'avais bypassé le problème en utilisant le validateur sfValidatorPass pour une sfWidgetFormInputText
c'est étonnant car j'ai essayé tout mais ça ne marche pas quant je fais $values['text'] il me donne le caractère A et quand je fais $values[$field]['text'] il m'envoie une erreur !! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com