colimasson | 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 :
- <?php
- class ContactForm extends sfForm
- {
- public function configure()
- {
- $this->setWidgets(array(
- 'Nom' => new sfWidgetFormInput(),
- 'Prenom' => new sfWidgetFormInput(),
- 'Email' => new sfWidgetFormInput(),
- 'Message' => new sfWidgetFormTextarea(),
- 'Captcha' => new sfWidgetFormInput(),
- ));
- $this->widgetSchema->setNameFormat('contact[%s]');
- $this->setValidators(array(
- 'Nom' => new sfValidatorString(
- array('required' => true, 'min_length' => 3, 'max_length' => 50),
- array('required' => 'Nom obligatoire', 'min_length' => 'Champ trop court', 'max_length' => 'Champ trop long')),
- 'Prenom' => new sfValidatorString(
- array('required' => true, 'min_length' => 3, 'max_length' => 50),
- array('required' => 'Prenom obligatoire', 'min_length' => 'Champ trop court', 'max_length' => 'Champ trop long')),
- 'Email' => new sfValidatorEmail(
- array('required'=>true),
- array('required' => 'Email obligatoire', 'invalid' => 'Adresse email invalide')),
- 'Message' => new sfValidatorString(
- array('required'=>true, 'min_length' => 4),
- array('required' => 'Message obligatoire','min_length' => 'Le message est trop court')),
- 'Captcha' => new sfValidatorSfCryptoCaptcha(
- array('required' => true, 'trim' => true),
- array('wrong_captcha' => 'Code invalide', 'required' => 'Champ obligatoire')),
- ));
- $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
- }
- }
- ?>
|
Le code de mon indexSuccess dans lequel j'affiche le formulaire :
Code :
- <?php
- // in the head of your template, call the helper
- use_helper('sfCryptoCaptcha');
- //the helper functions
- captcha_image();
- captcha_reload_button();
- ?>
- <h1>Envoyer un message</h1>
- <form action="<?php echo url_for('contact/index') ?>" method="POST">
- <table>
- <tr>
- <th>
- <?php echo $form['Nom']->renderLabel(); ?>
- </th>
- <td>
- <?php echo $form['Nom']->render(); ?>
- </td>
- </tr>
- <tr>
- <th>
- <?php echo $form['Prenom']->renderLabel(); ?>
- </th>
- <td>
- <?php echo $form['Prenom']->render(); ?>
- </td>
- </tr>
- <tr>
- <th>
- <?php echo $form['Email']->renderLabel(); ?>
- </th>
- <td>
- <?php echo $form['Email']->render(); ?>
- </td>
- </tr>
- <tr>
- <th>
- <?php echo $form['Message']->renderLabel(); ?>
- </th>
- <td>
- <?php echo $form['Message']->render(); ?>
- </td>
- </tr>
- <tr>
- <th><?php echo $form['Captcha']->renderLabel(); ?></th>
- <td>
- <?php echo $form['Captcha']->renderError(); ?>
- <?php echo $form['Captcha']->render(); ?>
- </td>
- <td><?php echo captcha_image(); echo captcha_reload_button(); ?></td>
- </tr>
- <tr>
- <td colspan="2" align="right">
- <input type="submit" value="Envoyer"/>
- </td>
- </tr>
- </table>
- </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...
Merci d'avance pour vos réponses ! |