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

Autres composants PHP Discussion :

Zend + Ajax + JQuery


Sujet :

Autres composants PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Zend + Ajax + JQuery
    Bonjour,

    Dans mon application je liste des lieux, et je voudrais via leur id, récupérer en AJAX toutes les informations relatives au lieu en question en l'affichant dans une boite de dialogue avec Jquery.

    J'ai réussis à le faire mais le problème c'est que dans ma boite de dialogue, toute ma vue s'affiche (layout complet) et non pas uniquement les informations du retour de l'AJAX.

    J'ai des difficultés à comprendre , si vous pouviez m'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Code HTML généré par un de mes lieux dans ma vue ( lien déclencheur ) 
    <a class="helpfullAjax" id="70|http://MONURL" title="Plus de détails" href="#">Plus de détails</a>
    <div id="detail"></div>
    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
     
    //JQuery avec mon AJAX
     
    $(document).ready(function() {
        $('a.helpfullAjax').click(function() {
        	var params = $(this).attr('id');
            param = params.split('|');
            var id = param[0];
            var baseUrl = param[1];
     
            $.ajax({
     		   type: "GET",
     		   url: baseUrl + "/places/placedetail",
     		   data: "idPlace="+id+"",
     		   success: function(html){
     			  $("#detail").empty();
     			  $("#detail").append(html);
     			  $("#detail").dialog({ width: 700 });
     		   }
            });
     
     
        });
     
    });
    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
     
     
    //PlacesController qui récupère les informations relatives au lieu via son ID
     
    public function placedetailAction()
    	{
    		$this->view->title = "Details du lieu";
    		$this->view->headTitle($this->view->title, 'PREPEND');
    		$auth = Zend_Auth::getInstance();
    		$idUser = $auth->getIdentity()->ID_UTILISATEUR;
    		$idPlace = $_GET['idPlace'];
    		$place = new Model_DbTable_Places();
    		if($place->checkUserPlace($idUser,$idPlace)){
    			//Récupération de toutes les informations relatives au lieu
    			$rowPlace = $place->getPlaceById($idPlace);
    			$this->view->NOM_LIEU = $rowPlace->NOM_LIEU;
    			$this->view->PAYS_LIEU = $rowPlace->PAYS_LIEU;
    			$this->view->VILLE_LIEU = $rowPlace->VILLE_LIEU;
    			$this->view->CP_LIEU = $rowPlace->CP_LIEU;
    			$this->view->ADR_LIEU = $rowPlace->ADR_LIEU;
    			$this->view->TEL_LIEU = $rowPlace->TEL_LIEU;
    			$this->view->URLS_LIEU = $rowPlace->URLS_LIEU;
    			$this->view->DESC_LIEU = $rowPlace->DESC_LIEU;
    			$this->view->DATEA_LIEU = $rowPlace->DATEA_LIEU;
    			$this->view->IMAGE_LIEU = $rowPlace->IMAGE_LIEU;
    			$this->view->IMAGEMAXI_LIEU = $rowPlace->IMAGEMAXI_LIEU;
    			$this->view->LAT_LIEU = $rowPlace->LAT_LIEU;
    			$this->view->LONG_LIEU = $rowPlace->LONG_LIEU;
    			//change size of the static map
    			$staticMap = $rowPlace->STATICMAP_LIEU;
    			$staticMap = str_replace('size=530x300','size=560x300',$staticMap);
    			$this->view->STATICMAP_LIEU = $staticMap;
    			$this->view->ITINERARYMAP_LIEU = $rowPlace->ITINERARYMAP_LIEU;
    			$this->view->LINKGMAP_LIEU = $rowPlace->LINKGMAP_LIEU;
    		}
     
    	}
    Je ne sais pas si je dois faire un controller particulier pour mon ajax ? ou si je dois désactiver l'affichage de mon layout ?

    Sachant que je vais réutiliser de l'ajax pour afficher des résultats d'autres controllers.

    En vous remerçiant.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Faut plus se tourner pour un retour des données via json

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 34
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par teonux Voir le message
    Faut plus se tourner pour un retour des données via json
    Le problème et la question de psylo66 reste la même :

    Je ne sais pas si je dois faire un controller particulier pour mon ajax ? ou si je dois désactiver l'affichage de mon layout ?
    Pas de controller particulier, ce n'est pas nécessaire, en revanche, ajax comme json, il te faut désactiver ton layout durant l'action sinon tu auras une belle imbrication de contenu ^^

    Dans ton controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$this->_helper->layout->disableLayout();
    Cordialement

  4. #4
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : février 2009
    Messages : 561
    Points : 1 092
    Points
    1 092
    Par défaut
    J'aurais plutôt proposé l'utilisation des contextes (AjaxContext notamment).

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Separe en plusieurs actions

    Moi je le fais sur de l'autocomplete et ca marches tres bien

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Quelque modification que tu peux faire dans votre code pour un code plus propre .
    Pour le split que tu as fait tu peux créer des atribes que tu peux récupérer comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Code HTML généré par un de mes lieux dans ma vue ( lien déclencheur ) 
    <a class="helpfullAjax" placeid="70" placeurl="http://MONURL" title="Plus de détails" href="#">Plus de détails</a>
    <div id="detail"></div>
    Et puis tu récupères avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var id = $(this).attr('placeid');
            var baseUrl = $(this).attr('placeurl');
    Ou créer une fonction et les passer comme paramètres

    pour l'envoie ajax si tu veux travailler avec get, concatène les paramètres directements dans url, pour rester dans le principe de zend "baseurl/controller/action/param/id"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $.ajax({
     		   type: "GET",
     		   url: baseUrl + "/places/placedetail/idPlace="+id+"",
     		   success: function(html){
     			  $("#detail").empty();
     			  $("#detail").append(html);
     			  $("#detail").dialog({ width: 700 });
     		   }
            });
    Et tu récupéras ta valeur dans le controller avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_getParam('idPlace', 0)
    à la place de Et la dernier c'est les nombreuses $this->view-> que t'a créé
    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
    if($place->checkUserPlace($idUser,$idPlace)){
    			//Récupération de toutes les informations relatives au lieu
    			$rowPlace = $place->getPlaceById($idPlace);
    			$this->view->NOM_LIEU = $rowPlace->NOM_LIEU;
    			$this->view->PAYS_LIEU = $rowPlace->PAYS_LIEU;
    			$this->view->VILLE_LIEU = $rowPlace->VILLE_LIEU;
    			$this->view->CP_LIEU = $rowPlace->CP_LIEU;
    			$this->view->ADR_LIEU = $rowPlace->ADR_LIEU;
    			$this->view->TEL_LIEU = $rowPlace->TEL_LIEU;
    			$this->view->URLS_LIEU = $rowPlace->URLS_LIEU;
    			$this->view->DESC_LIEU = $rowPlace->DESC_LIEU;
    			$this->view->DATEA_LIEU = $rowPlace->DATEA_LIEU;
    			$this->view->IMAGE_LIEU = $rowPlace->IMAGE_LIEU;
    			$this->view->IMAGEMAXI_LIEU = $rowPlace->IMAGEMAXI_LIEU;
    			$this->view->LAT_LIEU = $rowPlace->LAT_LIEU;
    			$this->view->LONG_LIEU = $rowPlace->LONG_LIEU;
    			//change size of the static map
    			$staticMap = $rowPlace->STATICMAP_LIEU;
    			$staticMap = str_replace('size=530x300','size=560x300',$staticMap);
    			$this->view->STATICMAP_LIEU = $staticMap;
    			$this->view->ITINERARYMAP_LIEU = $rowPlace->ITINERARYMAP_LIEU;
    			$this->view->LINKGMAP_LIEU = $rowPlace->LINKGMAP_LIEU;
    		}
    Tu pourra le faire directement dans la vues comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($place->checkUserPlace($idUser,$idPlace)){
    			//Récupération de toutes les informations relatives au lieu
    			$rowPlace = $place->getPlaceById($idPlace);
    			$this->view->rowPlace = $rowPlace;
    		}
    Et puis dans la vue tu affiches avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $this->rowPlace->NOM_LIEU;
    Et désolé bien sûr pour le dérangement
    A la recherche d'un film : http://chercher-un-film.com

Discussions similaires

  1. Ajax/jquery et zend framework
    Par Invité dans le forum Zend Framework
    Réponses: 1
    Dernier message: 27/06/2011, 16h20
  2. [ZF 1.9] Ajax(jQuery) - Doctrine - Zend - Requête Ajax vide
    Par Ibuprofène dans le forum Zend Framework
    Réponses: 1
    Dernier message: 31/08/2010, 09h53
  3. Effets après ajax (jQuery)
    Par arena94 dans le forum jQuery
    Réponses: 1
    Dernier message: 12/10/2008, 12h14
  4. Réponses: 1
    Dernier message: 07/10/2008, 12h17

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