Tout d'abord bonjour,

Je viens de decouvrir symfony il y a peu et j'avoue que c'est tres bien foutu mais je butes sur quelques petits soucis, je suis en train d'essayer une authentification ajax à l'aide d'un tuto (je ne sais pas si je peux mettre le lien, je le mettrais quand on me confirmera que je peux le faire). j'utilise les plugins suivant pour la gestion des utilisateurs :
- sfDoctrineGuardPlugin
- sfForkedDoctrineApplyPlugin

J'ai un module main et un module user, sur l'index du module main j'ai intégré un composant qui contient le formulaire d'identification, je gère cette identification avec le module user, voilà pour le plus gros.

Mon problème étant que j'ai l'impression que mon appel ajax ne s'effectue pas et appel directement l'action de mon module user, comment je peux tester si mon appel ajax s'effectue correctement ?

J'utilises JQuerie pour l'ajax, voilà le contenu de mon template partiel contenant le formulaire:

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
 
<div id="form_message">&nbsp;</div>
<form id="guard" action="<?php echo url_for('@sf_guard_signin') ?>" method="post">
  <?php echo $form->renderHiddenFields(); ?>
  <label>Utilisateur:</label>
  <?php echo $form['username']->render(); ?>
  <label>Mot de passe:</label>
  <?php echo $form['password']->render(); ?>
  <?php echo $form['remember']->render(array('id' => 'remember')); ?>
  Se souvenir de moi
 
  <input type="submit" value="S'identifier" />
  <a href="<?php echo url_for('@sf_guard_password') ?>">Mot de passe oublie ?</a>
</form>
 
<script type="text/javascript">
  $('#guard').submit(function() {
	alert('appel ok');
    $.post("<?php echo url_for('@sf_guard_signin'); ?>", $('#guard').serialize(), function(response) {
      switch(response.status) {
        case 'success':
        $('#form_message').html(response.message);
        $(location).attr('href',response.url);
        break;
        case 'failure':
        $('#form_message').html(response.message);
        $('#form_message').show();
        break;
      }
    }, 'json');
    return false;
  });
</script>
et le contenu de mon fichier action.class.php

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
38
39
40
41
42
43
44
45
46
 
<?php
 
/**
 * user actions.
 *
 * @package    
 * @subpackage user
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
require_once(sfConfig::get('sf_plugins_dir').'/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');
 
class userActions extends BasesfGuardAuthActions
{
  public function executeSignin($request)
  {
    $user = $this->getUser();
    if ($user->isAuthenticated())
    {
      return $this->redirect('@homepage');
    }
 
    if($request->isMethod('post') && $request->isXmlHttpRequest())
    {
      $class = sfConfig::get('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin');
      $form = new $class();
      $form->bind($request->getParameter($form->getName()));
      if ($form->isValid())
      {
        $values = $form->getValues();
        $user->signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false);
        $signinUrl = sfConfig::get('app_sf_guard_plugin_success_signin_url', $user->getReferer($request->getReferer()));
 
        return $this->renderText(json_encode(array('status' => 'success', 'url' => $signinUrl)));
      }
      else
      {
        return $this->renderText(json_encode(array('status' => 'failure','message' => 'Identification incorrecte')));
      }
    }
 
    $this->getResponse()->setStatusCode(401);
  }
}
?>
normalement si j'ai bien compris, lors de mon click sur le bouton "envoyer", le petit script javascript devrais appeler l'action signing de mon module user puis recevoir un retour json avec un message et une url (en fonction du resultat de l'authentification, hors que les identifiants soit bon ou mauvais, je tombe toujours sur le template signingSuccess. Je penses que c'est une erreur stupide mais je suis bloqué dessus depuis un bon moment et je me suis résolu a demander de l'aide . Merci d'avance pour votre aide.