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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
action.class.php:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
      }
    }
et si jamais ma class ContactForm:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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&eacute;nom',
      'adress'    => 'adresse',
      'zip_city'    => 'NPA/Ville',
      'phone'    => 'T&eacute;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