IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Appel ajax et symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre chevronné
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    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 : 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.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    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

  3. #3
    Membre chevronné
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    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

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Route symfony dans le paramètre url d'un appel ajax
    Par abc.xyz dans le forum Symfony
    Réponses: 8
    Dernier message: 03/08/2014, 08h17
  2. [script.aculo.us] Appel Ajax dans Ajax
    Par guiltouf dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 22/05/2007, 12h29
  3. [Dojo] Simple data grid sans appel Ajax
    Par Den's dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 14/12/2006, 08h23
  4. [AJAX] appel Ajax DOM
    Par MALAGASY dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/09/2006, 13h16
  5. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo