Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/08/2011, 18h40   #1
Membre expérimenté
 
Avatar de lil_jam63
 
Inscription : janvier 2004
Messages : 443
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 443
Points : 504
Points : 504
Par défaut Appel ajax et symfony

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 :
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 :
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.
__________________
----------------------------------------------------
Avant de poster, pensez à utiliser les différents outils à votre disposition:
Google, la FAQ et le moteur de recherche.
lil_jam63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 23h09   #2
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2008
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2008
Messages : 6
Points : 5
Points : 5
je ne vois pas d'ou vient l'erreur mais tu peux utiliser l'extension firebug pour voir si l'appel ajax se fait correctement, c'est comme ça que je vérifiais les erreurs de mes requêtes jquery ajax!

firebug est une extension de firefox, installe là puis active la sur ton site ensuite effectue tes requêtes et là tu peux voir dans sa console si l'appel se fait correctement ou non, en cas d'échec tu peux voir l'erreur qu'elle te retourne
Susanno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 23h24   #3
Membre expérimenté
 
Avatar de lil_jam63
 
Inscription : janvier 2004
Messages : 443
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 443
Points : 504
Points : 504
Bonsoir susanno et merci de t'y interesser, j'ai installer firebug et je n'ai absolument rien qui s'affiche dans la console (très bonne extension au passage), j'ai l'impression que le javascript n'est pas pris en compte.

EDIT:

aléatoirement, je me retrouve avec ce message d'erreur:

Pourtant j'ai bien chargé jQuery correctement (je pense en tout cas)

j'ai déposer le fichier 'jquery-1.2.6.min.js' dans le dossier MON_APP/web/js

puis dans mon layout (apps/frontend/templates/layout.php)

Code :
1
2
<?php use_javascript('jquery-1.2.6.min.js') ?>
<?php include_javascripts() ?>
EDIT2:

je viens de m'apercevoir en utilisant firebug que le fichier jquery-1.2.6.min.js n'etais pas telechargé (not found), pourtant il y est bien

EDIT3:

Alors c'est bon, c'est réglé, je savais bien que c'était une erreur stupide, je chargeais le fichier
Code :
<?php use_javascript('jquery-1.2.6.min.js') ?>
alors que le fichier que j'utilisais est le jquery-1.6.2.min.js

Et puis remplacer également $(...) par jQuery(...), voilà, si ma bêtise peut en aider qquns
__________________
----------------------------------------------------
Avant de poster, pensez à utiliser les différents outils à votre disposition:
Google, la FAQ et le moteur de recherche.
lil_jam63 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/09/2011, 21h58   #4
Invité de passage
 
Homme Jérémy Lechat
Étudiant
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Jérémy Lechat
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 0
Points : 0
Par défaut Problème avec les appels de fonctions de prototype.

Après avoir suivis les différents conseils de votre forums et autres tutoriels, j'ai réussi à faire fonctionner une fonction du JavacriptHelper (input_in_place_editor_tag(..)).

Le fonctionnement est parfait sauf qu'il y a des dommages dans ma mise en page. J'ai fait un espace membre avec un slideOut en Jquery et quand j'utilise ma fonction, le slide ne fonctionne plus du tout et agis comme-çi il n'y avai pas de JS alors qu'ils sont bien inclus dans la page.

Je pense a un conflit entre jQuery et Prototype mais je ne sais pas du tout comment le régler.

Je souhaiterais donc un petit coup de main s'il vous plaît.

Merci d'avance
Gorann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 13h00   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
jquery et prototype utilisent tous les deux un objet $() pour accéder au DOM.

Il n'est pas possible de les utiliser simultanément sans paramètrage.

jQuery a un paramètre qui permet de changer son $() en autre chose, regardes de ce côté. Un message sur le forum jQuery aura surement plus de chance d'aboutir.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h20.


 
 
 
 
Partenaires

Hébergement Web