Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'utilise la conception MVC avec Zend Framework 1.10.4.
J'aimerais bien que, lorsqu'un bouton d'un formulaire est cliqué, que l'on soit redirigé sur la page qui avait appelé ce formulaire.
Pour l'instant, j'utilise simplement le classique "$this->_helper->redirector('index');" pour retourner à l'index du contrôleur contenant l'action qui appelle le formulaire.
Mais il arrive parfois que l'action (le formulaire donc) soit appelée d'ailleurs, même d'un autre contrôleur !
Y a-t-il un moyen simple de récupérer l'adresse de la page appelante ?
Ou bien faut-il que je me lance dans l'envoie de cette adresse comme paramètre GET (ce qui ne me plairait vraiment pas) ?
Merci.
Dernière modification par gmifsud (12-07-2010 09:20:32)
Hors ligne
Salut,
tu peux peut-être trouver ton bonheur en regardant dans $this->getResponse().
Hors ligne
Merci pour le tuyau, j'ai exploré un peu cette piste.
J'ai essayé de faire ça :
Dans le contrôleur :
$resp = $this->getResponse(); $this->view->resp = $resp;
Dans la vue :
$resp = $this->resp; Zend_Debug::dump($resp);
Mais ça me renvoie toujours la même chose :
"
object(Zend_Controller_Response_Http)#75 (8) {
["_body":protected] => array(0) {
}
["_exceptions":protected] => array(0) {
}
["_headers":protected] => array(0) {
}
["_headersRaw":protected] => array(0) {
}
["_httpResponseCode":protected] => int(200)
["_isRedirect":protected] => bool(false)
["_renderExceptions":protected] => bool(false)
["headersSentThrowsException"] => bool(true)
}
"
La doc à http://framework.zend.com/manual/fr/zen … ugins.html semble parler de getResponse() pour des plugins mais ne développe pas vraiment sur le sujet.
J'ai regardé cette partie sur les pages de navigation, http://www.mikaelkael.fr/doczf/1.10/fr/ … .pages.mvc mais ça ne m'a pas plus avancé.
Dernière modification par gmifsud (11-06-2010 14:19:38)
Hors ligne
UP !
J'aimerais vraiment pouvoir récupérer l'adresse d'origine d'appel d'une page.
Exemple :
- Je suis à une page qui liste des albums et leurs artistes.
- Quand je clique sur un album, je vais à une page descriptive de cet album précis.
* Sur cette page se trouve le nom de l'artiste cliquable aussi.
- Quand je clique sur le nom de l'artiste, je vais sur une page d'édition des données de l'artiste.
Dans ces deux pages précédentes, le nom de l'artiste est un lien qui amène à une page d'édition de l'artiste.
Lorsque j'ai fini l'édition, que je clique sur annuler ou sauvegarder, comment revenir à la bonne page ? C'est à dire celle sur laquelle se trouvait le lien qui amenait à la page d'édition.
Merci.
Hors ligne
UP !
J'ai voulu utiliser le helper redirector.
http://zendframework.com/manual/fr/zend … lpers.html
Et j'ai crû avoir la solution en voyant la section
"
Exemples d'utilisation basique
Exemple #5 Options de réglage
"
L'ennui c'est que quand j'écris ce code, ça fait immédiatement planter mon appli. Firefox m'indique que "la page demande une redirection qui ne peut pas aboutir" ; Opera idem.
Pourtant l'idée me semble bonne : dans chaque contrôleur je définie la redirection par défaut ; et dans chaque action j'appelle cette redirection par défaut.
J'ai essayé en utilisant directement $this->_helper->redirector à la place de $this->_redirector mais j'obtiens le même symptôme de redirection "qui ne peut aboutir".
Bref, je n'ai plus d'idée.
Hors ligne
Voila un exemple de code qui est tiré du livre Zend framework http://www.zfbook.fr/ Alors sa date un peu mais sa peu t'aidé je pense.
<?php /** * Aide d'action permettant la redirection vers la page précédente * * @package zfbook * @subpackage controller */ class Zfbook_Controller_ActionHelpers_RedirectorToOrigin extends Zend_Controller_Action_Helper_Abstract { /** * Pattern Strategy * * @param string $message * @return void */ public function direct($message = null) { // Insertion du message dans le flash messenger if (!is_null($message)) { Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->addMessage($message); } // Redirection if (!isset(Zend_Registry::get('session')->requestUri)) { $gotoUrl = $this->getFrontController()->getBaseUrl(); } else { $gotoUrl = Zend_Registry::get('session')->requestUri; } Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->setCode(303)->gotoUrl($gotoUrl, array("prependBase" => false)); } /** * Attribue un namespace au flashmessenger * * @param string $namespace * @return Zfbook_Controller_ActionHelpers_RedirectorToOrigin */ public function setFlashMessengerNamespace($namespace) { Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->setNamespace($namespace); return $this; } }
$this->_helper->redirectorToOrigin();
cdt
Cédric
Hors ligne
Merci pour ton aide.
Cela commence à devenir un peu plus clair, cette histoire de redirection. Il semble que les url soient stockées dans une session.
D'ailleurs cette session dont il est question dans ton code, c'est une session automatique de Zend ou bien faut-il la remplir quelque part ?
Ce qui me fait peur c'est l'utilisation de gotoUrl() mais comme elle est appelée différemment peut-être que ça va fonctionner cette fois.
J'essaye.
Merci.
Hors ligne
Tu as réussi au final car ça m’intéresse
Hors ligne
la valeur de l'url :
$url = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
et ensuite :
$this->_redirect($url);
A vous devoir comment stocké l'info entre les 2 pages (champs hidden, flashmessenger, session ...)
Hors ligne
Merci
Hors ligne
J'étais passé à autre chose entre-temps et comptais y revenir ensuite.
Merci beaucoup nORKy.
Hors ligne