Mit URL-Abfragezeichenfolge zur URL umleiten

11

In meinem Modul muss ich nach Ausführung meines Skripts eine Umleitung zu einer Seite mit einer Abfragezeichenfolge in der URL vornehmen.

Folgendes habe ich:

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

Ich habe auch versucht:

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

Beide Methoden werfen einen Fehler auf: Bei der Verarbeitung Ihrer Anfrage ist ein Fehler aufgetreten

Was ich erwarte, ist umgeleitet zu http://magento.local/en_en/shop/index?test=1

Weiß jemand, wie ich das erreichen kann?

Bearbeiten:

Wie vorgeschlagen habe ich versucht:

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

Kein Fehler, aber nichts passiert. Ich bin nicht in einem Controller.

Bearbeiten 2:

Am Ende habe ich verwendet:

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

Das funktioniert wie erwartet! Vielen Dank.

MrUpsidown
quelle

Antworten:

9

Warum nicht einfach die URL so erstellen?

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

Der zweite Parameter von setRedirectist für den Umleitungscode (301, 302).

Wenn Sie die URL intern erstellen möchten, können Sie Folgendes versuchen:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));
Marius
quelle
Und dann? $this->_redirect($redirectUrl);?
MrUpsidown
@ MrUpsidown. _redirectwenn Sie in einem Controller sind. Wenn Sie woanders sind:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius
Keine Ursache. Das Hinzufügen ->sendResponse()am Ende hat den Job gemacht!
MrUpsidown
@ MrUpsidown. Es tut uns leid. Ich habe vergessensendResponse
Marius
2

Der bessere Weg, dies zu tun, ist so.

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

Wenn Sie zu einer anderen URL mit Abfrageparametern umleiten möchten, können Sie dies folgendermaßen tun:

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

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

Dadurch werden Sie weitergeleitet zu: http: //magento.local/en_en/shop/index? Test = 1 & test = 2

Willster
quelle
0

Wenn Sie von Google hierher gekommen sind, einen Controller verwenden und zu einem anderen umleiten möchten, behalten Sie die Argumente bei, die Sie verwenden können:

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

Wo module, controllerund actionkann ersetzt werden , indem *sie den Wert zu erhalten. Eine weitere Aktion in derselben Steuerung:

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

Gleicher Aktionsname, Geschwister-Controller:

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

Und so weiter...

Funke
quelle