Bonjour,
J'ai un petit soucis avec mes formulaires de contact depuis le dernier update de symf (1.2.7).
$this->form->isValid() me retourne constamment false.
si je fait un echo $form->renderGlobalErrors(), il me renvoie :
csrf token: Required.
Etant donnée que je design mon form manuellement, j'ai bien ajouter:
echo $form->renderHiddenFields()
qui m'affiche bien l'input avec la key de securité.
Malgré tout cela, isValid me retourne toujours false, et il y a toujours la GlobalError.
Quelqu'un aurait il eu un problème similaire?
Je vous joint le code de mon form:
action.class.php:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <form action="<?php echo url_for('contact/index') ?>" method="post"> <?php echo $form['company']->renderError() ?> <p><?php echo $form['company']->renderLabel() ?><?php echo $form['company'] ?></p> <?php echo $form['first_name']->renderError() ?> <p><?php echo $form['first_name']->renderLabel() ?><?php echo $form['first_name'] ?></p> <?php echo $form['last_name']->renderError() ?> <p><?php echo $form['last_name']->renderLabel() ?><?php echo $form['last_name'] ?></p> <?php echo $form['adresse']->renderError() ?> <p><?php echo $form['adresse']->renderLabel() ?><?php echo $form['adresse'] ?></p> <?php echo $form['zip_city']->renderError() ?> <p><?php echo $form['zip_city']->renderLabel() ?><?php echo $form['zip_city'] ?></p> <?php echo $form['phone']->renderError() ?> <p><?php echo $form['phone']->renderLabel() ?><?php echo $form['phone'] ?></p> <?php echo $form['email']->renderError() ?> <p><?php echo $form['email']->renderLabel() ?><?php echo $form['email'] ?></p> <?php echo $form['message']->renderError() ?> <p><?php echo $form['message']->renderLabel() ?><?php echo $form['message'] ?></p> <?php echo $form->renderHiddenFields() ?> <p><input type="submit" value="Envoyez" /></p> </form>
et si jamais ma class ContactForm:Code:
1
2
3
4
5
6
7
8
9
10 $this->form = new ContactForm(); if ($request->isMethod('post')) { $this->form->bind($request->getParameter('contact')); if ($this->form->isValid()) { //do something } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 class ContactForm extends sfForm { public function configure() { $this->setWidgets(array( 'company' => new sfWidgetFormInput(), 'first_name' => new sfWidgetFormInput(), 'last_name' => new sfWidgetFormInput(), 'adresse' => new sfWidgetFormInput(), 'zip_city' => new sfWidgetFormInput(), 'phone' => new sfWidgetFormInput(), 'email' => new sfWidgetFormInput(), 'message' => new sfWidgetFormTextarea() )); $this->widgetSchema->setLabels(array( 'company' => 'Entreprise', 'first_name' => 'Nom', 'last_name' => 'Prénom', 'adress' => 'adresse', 'zip_city' => 'NPA/Ville', 'phone' => 'Tél.', 'email' => 'Email', 'message' => 'Message' )); $this->setValidators(array( 'company' => new sfValidatorString(array('required' => false)), 'adresse' => new sfValidatorString(array('required' => false)), 'zip_city' => new sfValidatorString(array('required' => false)), 'phone' => new sfValidatorString(array('required' => false)), 'first_name' => new sfValidatorString(array('required' => false)), 'last_name' => new sfValidatorString(array('required' => false)), 'email' => new sfValidatorEmail(array('required' => false)), 'message' => new sfValidatorString(array('required' => false)), )); } }
Edit: Je tiens a préciser que si j'enlève la csrf_secret de mes settings, le formulaire fonctionne correctement