Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-06-2010 09:48:49

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

[RÉSOLU] Récupérer l'adresse d'origine ?

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

 

#2 11-06-2010 10:28:56

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

Salut,

tu peux peut-être trouver ton bonheur en regardant dans $this->getResponse().

Hors ligne

 

#3 11-06-2010 14:19:03

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

Merci pour le tuyau, j'ai exploré un peu cette piste.

J'ai essayé de faire ça :
Dans le contrôleur :

Code:

$resp = $this->getResponse();
$this->view->resp = $resp;

Dans la vue :

Code:

$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

 

#4 22-06-2010 12:31:59

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

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

 

#5 24-06-2010 09:33:59

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

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. sad

Hors ligne

 

#6 24-06-2010 10:15:23

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

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.

Code:

<?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;
    }
}

Code:

  $this->_helper->redirectorToOrigin();

cdt
Cédric


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#7 29-06-2010 10:43:56

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

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. smile

Hors ligne

 

#8 04-07-2010 16:50:58

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

Tu as réussi au final car ça m’intéresse big_smile

Hors ligne

 

#9 05-07-2010 08:43:32

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

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 ...)


----
Gruiiik !

Hors ligne

 

#10 05-07-2010 14:14:53

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

Merci big_smile

Hors ligne

 

#11 06-07-2010 09:57:58

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [RÉSOLU] Récupérer l'adresse d'origine ?

J'étais passé à autre chose entre-temps et comptais y revenir ensuite.

Merci beaucoup nORKy.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages