Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis entrain de mettre certaines parties de mon projet en ajax et j'avoue que ce n'est pas bien claire. J'espère que vous pourrez m'éclaire sur ce sujet.
Voila un exemple. Sur la page de login, j'ai un menu déroulant ou l'on peut choisir la langue par défaut de l'administrateur.
Ensuite j'ai fait ce bout de script en JS avec JQuery :
$(document).ready(function(){ $('#languages option').click(function() { var value = $(this) . val(); var $.ajax({ type: "POST", url: "/manager/index/languages", data: "changeLanguage=" + value, success: function(msg){ location.reload() } }); }); });
Quelques explications, je récupère le code de la langue dans les options du menu déroulant puis je l'envoi en paramètre à l'action suivante "/manager/index/languages".
Comme le faite que changer la langue peut être utilisé n'importe ou dans l'admin ou la partie public, j'ai donc décidé de mettre cette action dans une extention de mes controller d'action.
Exemple :
class Controller_Action extends Zend_Controller_Action { protected $_request = null; public function init() { $this->_request = $this->getRequest(); } public function languagesAction() { if(isset($this->_request->changeLanguage) && in_array($this->_request->changeLanguage, array('en_GB','fr_FR'))){ Zend_Registry::get('session')->language = $this->_request->changeLanguage; } } }
Ainsi je peux mettre la class Controller_Action à n'importe quel controller d'action. Voila mes questions.
1 - Est-ce une bonne solution ?
2 - Dans le code JS, j'ai mis en dur "/manager/index/languages", mais il n'y a que action qui fixe; le module et le contrôler peuvent différents suivant la page. Comment faire pour rendre cette partie dynamique ?
3 - D'après ce que je lis sur le net, il faudrait utiliser ajaxContext ou contextSwitch. Là ça fonctionne sans, pourquoi ? Et en quoi cela peut-il apporter des problèmes s'ils ne sont pas utilisés ?
Merci d'avance de vos réponces
Cordialement.
Dernière modification par nicko (14-09-2009 10:51:06)
Hors ligne
perso je frais un contrôleur spécifique à la gestion des préférence de l'utilisateur (entièrement en ajax)
ainsi tu peux l'appeler n'importe où et tu mélange pas les actions de tes contrôleurs
de plus tu n'est pas obligé de passer des paramètre dans l'url pour forcer le switchContext mais utiliser dans le init du contrôleur un isXmlHttpRequest et un noViewRenderer
A+JYT
Hors ligne
Merci pour ta réactivité sekaijin.
C'est vrai que je n'avais pas forcément pensé à cette solution qui est tout de même plus simple !
Mais je ne comprends pas à quoi correspond le switchContext. Au juste, que ce que ça permet de plus ?
Hors ligne
je ne sais pas où exactemen tu as sur le forum une discu assez longue sur le sujet avec pas mal d'exemples
A+JYT
Hors ligne
Ok merci je vais chercher ça.
Hors ligne
Pages: 1