Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je débute sur Zend et Ajax, et j'essaie de rendre une page chargée via XHttpRemote dans un div, mais pour une raison qui m'échappe, les manipulations décrites en http://www.z-f.fr/forum/viewtopic.php?pid=6823 ne marchent pas: la requête est bien détectée en tant qu'ajax mais le layout s'obstine à s'afficher et à rechercher le fichier template avec l'extension .phtml (pas d'ajax ni xml devant).
est ce que cela pourrait venir du bootstrap ?
voici un extrait de ce dernier:
/* Init View Helper */ $view = new Zend_View(); $view->addHelperPath(HELPER_DIR, APP_NAME . '_View_Helper'); $view->strictVars(); $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); $view = null; $viewRenderer = null; /* Init Layout */ Zend_Layout::startMvc(array('layoutPath' => LAYOUT_DIR));
pour le rendu en ajax j'ai cette page en contrôleur:
class MenuController extends Zend_Controller_Action { public $ajaxable = array( 'index' => array('html'), 'maxime' => array('xml'), ); public function init() { $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->initContext(); } public function indexAction() { $la = $this->view->placeholder('Zend_Layout'); $la->scripts = array('prototype/prototype', 'scriptaculous/scriptaculous'); //$this->render(); } public function maximeAction() { if (!$this->_request->isXmlHttpRequest()) { $this->_redirect("index/index"); } $this->view->text = "Un texte à insérer"; } }
pour la page html j'ai:
new Ajax.Updater("mxm1_c", "<?php echo BASE_URL ?>menu/maxime", { method: 'get', encoding: 'ISO8859-15', onSuccess: function(transport) { var response = transport.responseText || "no response text"; alert("Success! \n\n" + response); } });
Est ce que quelqu'un aurait une idée ?
Merci d'avance.
Dernière modification par garvek (23-05-2008 08:02:35)
Hors ligne
Salut
Tu as oublié de précisé dans ton appel de l'url "menu/maxime" dans quel contexte tu souhaites l'utiliser.
Par défaut, ZF exécute le context normal donc il désactive pas le layout (si utilisé) et il cherche nomAction..phtml
Fait çà
new Ajax.Updater("mxm1_c", "<?php echo BASE_URL ?>menu/maxime/?format=xml", { method: 'get', encoding: 'ISO8859-15', onSuccess: function(transport) { var response = transport.responseText || "no response text"; alert("Success! \n\n" + response); } });
ou bien :
"menu/maxime/format/xml"
Dernière modification par or4cle (22-05-2008 09:44:30)
Hors ligne
J'ai fait la modification, et maintenant ça marche (avec ?format=xml, /xml ne marche pas chez moi). J'ai un popup avec le contenu de la page renvoyée par Ajax. Par contre le contenu est renvoyé en UTF-8, donc il doit manquer quelque chose au niveau bootstrap.
En tous cas merci pour les précisions !
EDIT/ j'ai essayé d'ajouter $view->setEncoding("ISO8859-15") dans le bootstrap, ça n'a rien donné. Tant pis je vais bien finir par trouver ^^
Dernière modification par garvek (23-05-2008 08:02:05)
Hors ligne