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 :

requéte Ajax dans symfony 2


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut requéte Ajax dans symfony 2
    salut à tous ça fais des jours que je cherche des solutions à mon problème,en fait je veux modifier la fonction loginAction de symfony 2 en utilisant ajax pour retourner les erreurs d'authentification,mais le problème est que mon controller ne détecte plus isXmlHttpRequest() et je sais pas pourquoi.
    voila mon DefaultController.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
    public function loginAction()
        {
     
            $request = $this->container->get('request');
            $isAjax = $request->isXmlHttpRequest();
    		$session = $request->getSession();
    		$error='';
      if($isAjax==true)
        {
     
     
     
            // get the login error if there is one
     
     
     
            if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
     
                $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
     
     
            } 
    else {
                $error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
     
            }
     
    		 return $this->render('MyhomeBundle:Security:login.html.twig', array(
     
                'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                'error'         => $error,));
    $response = new Response(json_encode($error));
    		return $response;
     
    		}
    		else return $this->render('MyhomeBundle:Security:login.html.twig', array(
     
                'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                'error'         => $error,));
     
    }
    et voici mon code js:
    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
    <script>
     
     
    $('#monforme').submit(function() {
     
    $.ajax({
    type : 'POST',
    url : '{{ path('login_check') }}',
    dataType : 'json',
    data: {},
    success : function(data){
     
    $('#div_login_message').html(''+data.error);
     
    }
    });
     
    return false;
    });
     
    </script>
    et voila mon routing.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    login:
        pattern:   /login
        defaults:  { _controller: MyhomeBundle:default:login}  
     
     
     
     
    login_check:
        pattern:   /login_check
        requirements:
          _method: POST
    Merci d'avance

  2. #2
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    Message d'erreur ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    il ya pas d'erreur mais il va directement au dernier else donc isAjax prend tjrs False.est c qu'il ya un moyen de tester prkoi mon requete ajax n'est pas reconnu?

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    Sauf erreur de copier/coller ou bug de mon navigateur ton action va toujours renvoyer la reponse twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    return $this->render('MyhomeBundle:Security:login.html.twig', array( 
                'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                'error'         => $error,));
    //aucune raison que la méthode ne passe par ici
    $response = new Response(json_encode($error));
    return $response;
    dans ton code javascript tu fais un appel Ajax sur la route login_check et pas sur login si une erreur d'authentification a lieu il y a une redirection de la requete sur Login, c'est une redirection HTTP donc l'objet Request est différent entre login_check et login (dans login il n'est pas considéré comme XmlHttpRequest;

    Je pense que ton problème est similaire à celui que j'avais eu il y a quelques temps et qui se règle via un listener:
    http://www.developpez.net/forums/d11...x-redirection/

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Ok je veux voir ce lien.entous cas merci pour ta réponse

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    svp est ce que tu peux me donner quelques explications à propos listener et event car j'arrive pas à débuter et créer ce listener pour attraper la requête ajax. merci de nouveau

Discussions similaires

  1. [1.x] fonction $ajax dans symfony
    Par nlefebvre1 dans le forum Symfony
    Réponses: 1
    Dernier message: 21/11/2011, 12h02
  2. [1.x] Recherche et ajax dans symfony
    Par tiffany dans le forum Symfony
    Réponses: 1
    Dernier message: 22/07/2010, 17h54
  3. [AJAX] Conflits lors de deux requêtes AJAX dans la même fonction js
    Par fayred dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/07/2008, 14h49
  4. [AJAX] Affichage de requête PHP dans un div créé par Ajax
    Par will89 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/12/2007, 19h00
  5. Réponses: 4
    Dernier message: 06/11/2007, 14h05

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