Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
Pour récupérer un paramètre dans l'action d'un controlleur, il suffit d'utiliser la fonction _getParam:
[lang=php] function ajaxAction() { $lesVilles = $villeMapper->getVilleDuPays($this->_getParam('idPays')); }
Hors ligne
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
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 :
[lang=php] $formModif = new Application_Form_Modif(); echo $formModif;
Dernière modification par Makaveli (24-11-2011 10:29:36)
Hors ligne
Pages: 1