Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Après moultes problèmes (:p) je suis enfin parvenu à activer dojo. J'essaie maintenant de faire une requête avec xhrGet. Mais j'ai un problème qui est visiblement lié à l'URL. Je pensais que ce sujet serait plus présent sur le net mais je n'ai pas réussi à trouver un exemple qui me convienne.
J'ai donc une vue index.phtml du controleur IndexControler qui redirige l'utilisateur vers un autre controleur (ApplicationControleur) avec l'action index et un paramètre id de valeur 1 (on a donc l'url: projet/application/index/id/1). Dans l'index de ApplicationControleur on a alors un appel à AJAX:
AjaxController:
class Polls_AjaxController extends Zend_Controller_Action { public function init() { $this->_AjaxContext = $this->_helper->getHelper('AjaxContext'); $this->_AjaxContext ->addActionContext('index','json') ->addActionContext('contact','json') ->initContext('json'); } public function indexAction() { if ($this->getRequest()->isXmlHttpRequest()) { echo "ok"; } } public function contactAction() { $this ->_helper->viewRenderer->setNoRender(); if ($this->getRequest()->isXmlHttpRequest()) { $mail = $this->_request->getParam('mail'); $db = Zend_Registry::get('dbAdapter'); Zend_Db_Table_Abstract::setDefaultAdapter($db); $contacts = new Polls_Model_Contacts(); $row = $contacts->createRow(); $row->mail = $mail; $row->save(); echo "ajoute"; } } }
Et le code de la vue associé à indexAction de ApplicationController:
<script type="text/javascript"> function showContactDialog() { dijit.byId("contactDialog").show(); } function addContact(arguments) { xhrArgs = { url: "ajax/contact", sync: true, headers: {"X-Requested-With": "XMLHttpRequest"}, content:{ mail:arguments[0].mail }, load: function(responseObject, ioArgs){ alert(responseObject); }, error: function(response, ioArgs){ return response; } } dojo.xhrGet(xhrArgs); } dojo.addOnLoad(showContactDialog); </script>
Après plusieurs tests l'insertion dans la table se fait correctement si je fais manuellement appel au controleur. En tapant projet/polls/application l'insertion s'effectue alors sans problème. En revanche lorsque je tape projet/polls/application/ ou projet/polls/application/index/id/1 là ça ne marche plus!
Alors je n'y comprend vraiment plus rien. Je pense que l'URL est mal interprétée d'un côté ou d'un autre mais je ne sais pas comment règler ça.
Merci par avance.
Hors ligne
Pages: 1