Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis en dev. depuis quelques temps sur une application conséquente dans laquelle j'implémente une API RESTful.
Une partie du front fait appel à l'API via Ajax et je me demande quelle est la meilleur façon d'effectuer une redirection après un succès sur une requête POST via Ajax.
Dans un controlleur je procède (en gros) ainsi:
public function init() { parent::init(); $context = $this->_helper->getHelper('ContextSwitch'); $context->addActionContext('post', 'json'); $context->addActionContext('put', 'json'); $context->addActionContext('delete', 'json'); $context->initContext(); if (false === $this->_request->isXmlHttpRequest()) { $this->_redirector = $this->_helper->getHelper('redirector'); $this->_redirector->setUseAbsoluteUri(); } } // ...
// ... postAction() if ($input->hasInvalid() || $input->hasMissing()) { $errors = $input->getMessages(); if ($this->_request->isXmlHttpRequest()) { // 400 (Bad Request) - echec validation formulaire $this->_response->setHttpResponseCode(400); $this->view->errors = $errors; } else { // ... message d'erreurs à placer dans flash messenger return $this->_redirector->gotoUrl('ma-ressource/new'); } } else { // traitement.... if ($this->_request->isXmlHttpRequest()) { // 201 (Created) - traitement ok $this->_response->setHttpResponseCode(201); $this->view->redirect = $this->view->serverUrl() . $this->view->baseUrl() . "/ma-ressource/$id"; } else { return $this->_redirector->gotoUrl("/ma-ressource/$id"); } }
Et côté JS, je test sur un success si j'ai un redirect et si oui je redirige par un top.location.
Je sais pas mais je ne suis pas satisfait par cette méthode, comment faites-vous ?
Merci,
A+ benjamin.
Dernière modification par Delprog (24-10-2009 17:57:37)
Hors ligne
Pages: 1