Rediriger vers l'URL avec la chaîne de requête


11

Dans mon module, après l'exécution de mon script, j'ai besoin de faire une redirection vers une page avec une chaîne de requête dans l'URL.

Voici ce que j'ai:

$redirectUrl = 'http://magento.local/en_en/shop/index';
$redirectArgs = array('test' => '1');
$this->_redirect($redirectUrl, $redirectArgs);

J'ai aussi essayé:

Mage::app()->getFrontController()->getResponse()->setRedirect($redirectUrl, $redirectArgs)->sendResponse();

Les deux méthodes génèrent une erreur: une erreur s'est produite lors du traitement de votre demande

Ce que j'attends, c'est d'être redirigé vers http://magento.local/en_en/shop/index?test=1

Est-ce que quelqu'un sait comment je peux y arriver?

Éditer:

Comme suggéré, j'ai essayé:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl);

Aucune erreur, mais rien ne se passe. Je ne suis pas dans un contrôleur.

Modifier 2:

J'ai fini par utiliser:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl)->sendResponse();

Cela fonctionne comme prévu! Je vous remercie.

Réponses:


9

Pourquoi ne pas simplement créer l'URL comme ça?

 $redirectUrl = 'http://magento.local/en_en/shop/index?test=1';

le deuxième paramètre de setRedirectest pour le code de redirection (301, 302).

Si vous souhaitez créer l'URL en interne, vous pouvez essayer ceci:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));

Puis? $this->_redirect($redirectUrl);?
MrUpsidown

@MrUpsidown. _redirectsi vous êtes dans un contrôleur. Si vous êtes ailleurs:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius

Ça ne fait rien. L'ajout ->sendResponse()à la fin a fait l'affaire!
MrUpsidown

@MrUpsidown. Pardon. J'ai oubliésendResponse
Marius

2

La meilleure façon de le faire est comme ça.

Mage_Core_Controller_Varien_Action :: _ redirect ('urlpost / index / response', array ('_ secure' => true, '_ query' => 'string1 = 417'));

0

Si vous souhaitez rediriger vers une autre URL avec des paramètres de requête, vous pouvez le faire comme ceci:

$redirectUrl = 'http://magento.local/en_en/shop/index';
$query_parameters = array(
                '_query'=> array(
                    'test' => '1',
                    'test'=>'2'
                )
            );

$this->_redirect($redirectUrl, $query_parameters);

Cela vous redirigera vers: http: //magento.local/en_en/shop/index? Test = 1 & test = 2


0

Si vous vous êtes retrouvé ici de Google, utilisez un contrôleur et souhaitez rediriger vers un autre en préservant les arguments que vous pouvez utiliser:

$this->_redirect('module/controller/action', $this->getRequest()->getParams());

module, controlleret actionpeut être remplacé par *pour conserver sa valeur. Une autre action dans le même contrôleur:

$this->_redirect('*/*/anotherAction', $this->getRequest()->getParams());

Même nom d'action, contrôleur frère:

$this->_redirect('*/sibling/*', $this->getRequest()->getParams());

Etc...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.