Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-11-2011 12:57:43

Makaveli
Nouveau membre
Date d'inscription: 11-11-2011
Messages: 3

Ajax avec Dojo (passage de paramètres)

Bonjour,

Je sèche sur un problème à priori ultra classique mais j'ai pas de solution...
Je souhaite simplement afficher les villes d'un pays après l’événement onChange.
Le code fonctionne mais je n'arrive pas à exécuter ma requête avec l'id du pays récupéré en JS.

Voici le code JS :

function changeVille() {
    var menuPays = dojo.byId("numeroPays");
    var indicePays = menuPays.selectedIndex;
    var clefPays = menuPays.options[indicePays].value;
    dojo.xhrGet({
        // PHP CLASSIQUE ressemblerait à :
        // url : "../ajax/afficherVille.php?numeroPays="+clefPays,
       
        // ZEND SANS PARAMETRE (marche)
        url : "/default/nomDuControleur/action/id/format/html",
       
        //ZEND AVEC PARAMETRE (ici que ca coince)
        //url : "/default/nomDuControleur/action/idPays/"+clefPays+"/format/html",

       
        load : function(response) {
            var menuVilles = dojo.byId("listeVille");
            menuVilles.innerHTML = response;
            return response;
        },
        error : function(response) {
            var menuVilles = document.getElementsByName("ville")[0];
            menuVilles.innerHTML = "";
            return response;
        }
    });

J'aimerais que le contrôleur est accès à "clefPays" pour que la requête puisse fonctionner (actuellement une donnée en dur). Auparavant j'aurais fait un $_GET['numeroPays'] sur la page de traitement et en JS url :...Ville.php?numeroPays="+clefPays

La ligne du contrôleur qui pose problème :

$lesVilles = $villeMapper->getVilleDuPays(5); // récupérer en GET clefPays obtenu dans le .js

J'espère avoir été clair :-)

Merci d'avance.

Dernière modification par Makaveli (11-11-2011 12:59:17)

Hors ligne

 

#2 14-11-2011 09:14:09

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Ajax avec Dojo (passage de paramètres)

Pour récupérer un paramètre dans l'action d'un controlleur, il suffit d'utiliser la fonction _getParam:

Code:

[lang=php]
function ajaxAction()
{
    $lesVilles = $villeMapper->getVilleDuPays($this->_getParam('idPays'));
}

Hors ligne

 

#3 19-11-2011 18:48:55

Makaveli
Nouveau membre
Date d'inscription: 11-11-2011
Messages: 3

Re: Ajax avec Dojo (passage de paramètres)

Merci de t’intéresser à mon problème.
Malheureusement, le contrôleur ne récupère aucune valeur ($_GET reste désespérément vide).
J'en déduis que ma manière d'envoyer la valeur est mauvaise :

url : "/default/nomDuControleur/action/idPays/"+clefPays+"/format/html",

Une idée?

Merci

EDIT :
J'ai résolu le problème, les paramètres ne sont pas envoyé au contrôleur mais à la vue xxx.ajax.phtml.
J'ai également utilisé content de dojo.xhrGet au lieu de mettre les paramètres dans l'id.

Dernière modification par Makaveli (24-11-2011 10:23:53)

Hors ligne

 

#4 24-11-2011 10:28:34

Makaveli
Nouveau membre
Date d'inscription: 11-11-2011
Messages: 3

Re: Ajax avec Dojo (passage de paramètres)

En revanche j'ai un autre problème, j'utilise des formulaires Dojo mais ceux que je construis dans un contexte Ajax n'ont rien de Dojo (Formulaire classique).
Ce qui est logique puisqu'on désactive le layout, comment ajouter Dojo dans un contexte Ajax?

Merci

PS/ code de la vue Ajax :

Code:

[lang=php]
    $formModif = new Application_Form_Modif();
    echo $formModif;

Dernière modification par Makaveli (24-11-2011 10:29:36)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages