Reindirizzare a URL con stringa di query


11

Nel mio modulo, dopo l'esecuzione del mio script, devo effettuare un reindirizzamento a una pagina con una stringa di query nell'URL.

Ecco cosa ho:

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

Ho anche provato:

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

Entrambi i metodi generano un errore: si è verificato un errore durante l'elaborazione della tua richiesta

Quello che mi aspetto è il reindirizzamento a http://magento.local/en_en/shop/index?test=1

Qualcuno sa come posso farlo?

Modificare:

Come suggerito, ho provato:

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

Nessun errore, ma non succede nulla. Non sono in un controller.

Modifica 2:

Ho finito per usare:

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

Funziona come previsto! Grazie.

Risposte:


9

Perché non creare semplicemente l'URL in questo modo?

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

il secondo parametro di setRedirectè per il codice di reindirizzamento (301, 302).

Se vuoi creare l'URL internamente puoi provare questo:

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

E poi? $this->_redirect($redirectUrl);?
MrUpsidown,

@MrUpsidown. _redirectse sei in un controller. Se sei altrove:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius

Non importa. L'aggiunta ->sendResponse()alla fine ha fatto il lavoro!
MrUpsidown,

@MrUpsidown. Scusate. Mi sono dimenticato disendResponse
Marius

2

Il modo migliore per farlo è in questo modo.

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

0

Se desideri reindirizzare a un altro URL con parametri di query, puoi farlo in questo modo:

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

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

Questo ti reindirizzerà a: http: //magento.local/en_en/shop/index? Test = 1 & test = 2


0

Se sei finito qui da Google, stai utilizzando un controller e desideri reindirizzare a un altro conservando gli argomenti che puoi utilizzare:

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

Dove module, controllere actionpuò essere sostituito da *preservare il suo valore. Un'altra azione nello stesso controller:

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

Stesso nome dell'azione, controller di pari livello:

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

E così via...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.