Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1481 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  SYMFONY - Champ de vérification Captcha pour un formulaire

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SYMFONY - Champ de vérification Captcha pour un formulaire

n°2039234
colimasson
Posté le 30-11-2010 à 11:31:47  profilanswer
 

Bonjour !
 
Je suis actuellement en train de développer un site avec Symfony et je bloque avec la mise en place d'un champ de vérification Captcha dans un formulaire de contact très simple.
 
J'utilise le plugin sfCryptoCaptchaPlugin que j'ai téléchargé sur le site officiel, décompressé et déposé dans C:\wamp\www\monProjet
En ligne de commande, j'ai ensuite tapé le chemin d'accès au dossier (même chemin que ci-dessus) puis la commande :
 
symfony plugin:install -s beta sfCryptoCaptchaPlugin
 
C'est la première fois que j'installe un plugin et je ne sais pas si j'ai suivi une démarche correcte...
 
Si jamais le problème venait du code, je vous le mets juste en dessous.
Tout d'abord, le code de mon ContactForm :
 
 

Code :
  1. <?php
  2. class ContactForm extends sfForm
  3. {
  4. public function configure()
  5. {
  6. $this->setWidgets(array(
  7. 'Nom' => new sfWidgetFormInput(),
  8. 'Prenom' => new sfWidgetFormInput(),
  9. 'Email' => new sfWidgetFormInput(),
  10. 'Message' => new sfWidgetFormTextarea(),
  11. 'Captcha' => new sfWidgetFormInput(),
  12. ));
  13. $this->widgetSchema->setNameFormat('contact[%s]');
  14. $this->setValidators(array(
  15. 'Nom' => new sfValidatorString(
  16. array('required' => true, 'min_length' => 3, 'max_length' => 50),
  17. array('required' => 'Nom obligatoire', 'min_length' => 'Champ trop court', 'max_length' => 'Champ trop long')),
  18. 'Prenom' => new sfValidatorString(
  19. array('required' => true, 'min_length' => 3, 'max_length' => 50),
  20. array('required' => 'Prenom obligatoire', 'min_length' => 'Champ trop court', 'max_length' => 'Champ trop long')),
  21. 'Email' => new sfValidatorEmail(
  22. array('required'=>true),
  23. array('required' => 'Email obligatoire', 'invalid' => 'Adresse email invalide')),
  24. 'Message' => new sfValidatorString(
  25. array('required'=>true, 'min_length' => 4),
  26. array('required' => 'Message obligatoire','min_length' => 'Le message est trop court')),
  27. 'Captcha' => new sfValidatorSfCryptoCaptcha(
  28. array('required' => true, 'trim' => true),
  29. array('wrong_captcha' => 'Code invalide', 'required' => 'Champ obligatoire')),
  30. ));
  31. $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
  32. }
  33. }
  34. ?>


 
 
Le code de mon indexSuccess dans lequel j'affiche le formulaire :
 
 

Code :
  1. <?php
  2. // in the head of your template, call the helper
  3. use_helper('sfCryptoCaptcha');
  4. //the helper functions
  5. captcha_image();
  6. captcha_reload_button();
  7. ?>
  8. <h1>Envoyer un message</h1>
  9. <form action="<?php echo url_for('contact/index') ?>" method="POST">
  10. <table>
  11. <tr>
  12. <th>
  13. <?php echo $form['Nom']->renderLabel(); ?>
  14. </th>
  15. <td>
  16. <?php echo $form['Nom']->render(); ?>
  17. </td>
  18. </tr>
  19. <tr>
  20. <th>
  21. <?php echo $form['Prenom']->renderLabel(); ?>
  22. </th>
  23. <td>
  24. <?php echo $form['Prenom']->render(); ?>
  25. </td>
  26. </tr>
  27. <tr>
  28. <th>
  29. <?php echo $form['Email']->renderLabel(); ?>
  30. </th>
  31. <td>
  32. <?php echo $form['Email']->render(); ?>
  33. </td>
  34. </tr>
  35. <tr>
  36. <th>
  37. <?php echo $form['Message']->renderLabel(); ?>
  38. </th>
  39. <td>
  40. <?php echo $form['Message']->render(); ?>
  41. </td>
  42. </tr>
  43. <tr>
  44. <th><?php echo $form['Captcha']->renderLabel(); ?></th>
  45. <td>
  46. <?php echo $form['Captcha']->renderError(); ?>
  47. <?php echo $form['Captcha']->render(); ?>
  48. </td>
  49. <td><?php echo captcha_image(); echo captcha_reload_button(); ?></td>
  50. </tr>
  51. <tr>
  52. <td colspan="2" align="right">
  53. <input type="submit" value="Envoyer"/>
  54. </td>
  55. </tr>
  56. </table>
  57. </form>


 
 
Tout cela ne marche pas et j'obtiens l'erreur :
"Widget "Captcha" does not exist."
L'erreur semble venir de mon indexSuccess, à la ligne suivante :
<th><?php echo $form['Captcha']->renderLabel(); ?></th>
 
Si vous voyez d'où l'erreur peut provenir, cela m'aiderait vraiment car je suis complètement perdue... :euh:
 
Merci d'avance pour vos réponses !

mood
Publicité
Posté le 30-11-2010 à 11:31:47  profilanswer
 

n°2040813
colimasson
Posté le 08-12-2010 à 15:31:38  profilanswer
 

J'ai finalement décidé de me tourner vers le sfWidgetFormReCaptcha qui m'avait l'air plus simple d'utilisation.
 
Je me suis procurée une clé privée et publique en créant mon compte sur reCaptcha et j'ai modifié mon fichier app.yml en conséquent :
 

Code :
  1. # default values
  2. all:
  3.   recaptcha:
  4.     active: true
  5.     public_key:      ............
  6.     private_key:     ..........


 
J'ai ensuite modifié mon formulaire :
 

Code :
  1. $this->setWidgets(array(
  2.   'Captcha' => new sfWidgetFormReCaptcha(array(
  3.   'public_key' => sfConfig::get('app_recaptcha_public_key'))),
  4.   ));


 
Et mis en place le validator associé :  
 

Code :
  1. $this->setValidators(array(
  2.   'Captcha' => new sfValidatorReCaptcha(
  3.    array('required'=>true,'private_key' => sfConfig::get('app_recaptcha_private_key')),
  4.    array('required'=>'Champ obligatoire')),
  5.    ));


 
J'ai entendu parler d'un $this->validatorSchema->setPostValidator
Faut-il que je l'intègre à mon code ?  
 
Merci d'avance pour vos réponses...


Message édité par colimasson le 08-12-2010 à 15:31:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  SYMFONY - Champ de vérification Captcha pour un formulaire

 

Sujets relatifs
Formulaire Excel CommissionsFormulaire et requete SQL
Formulaire dans une JSP : auto complétion ?Extraction mulitples sur un champ
affichage div dans un formulaireRécuperer objet dans tableau en fonction du champ d'un objet
Modifier le contenu d'une table avec un formulaire ?transmission de varible avec 1 formulaire
[RESOLU]redirection php a partir d'un form le tout sur un seul fichierFormulaire a envoyer / Mail vide / html + php
Plus de sujets relatifs à : SYMFONY - Champ de vérification Captcha pour un formulaire


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR