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.
la source
$this->_redirect($redirectUrl);
?_redirect
si vous êtes dans un contrôleur. Si vous êtes ailleurs:Mage::app()->getResponse()->setRedirect($redirectUrl);
->sendResponse()
à la fin a fait l'affaire!sendResponse
La meilleure façon de le faire est comme ça.
la source
Si vous souhaitez rediriger vers une autre URL avec des paramètres de requête, vous pouvez le faire comme ceci:
Cela vous redirigera vers: http: //magento.local/en_en/shop/index? Test = 1 & test = 2
la source
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:
Où
module
,controller
etaction
peut être remplacé par*
pour conserver sa valeur. Une autre action dans le même contrôleur:Même nom d'action, contrôleur frère:
Etc...
la source