Redirecionar para URL com string de consulta

11

No meu módulo, após a execução do meu script, preciso redirecionar para uma página com uma string de consulta na URL.

Aqui está o que eu tenho:

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

Eu também tentei:

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

Ambos os métodos geram um erro: ocorreu um erro ao processar sua solicitação

O que espero é ser redirecionado para http://magento.local/en_en/shop/index?test=1

Alguém sabe como eu posso conseguir isso?

Editar:

Como sugerido, tentei:

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

Sem erro, mas nada acontece. Eu não estou em um controlador.

Edição 2:

Acabei usando:

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

Isso funciona como esperado! Obrigado.

MrUpsidown
fonte

Respostas:

9

Por que não apenas criar o URL como este?

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

o segundo parâmetro de setRedirecté para o código de redirecionamento (301, 302).

Se você deseja criar o URL internamente, tente o seguinte:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));
Marius
fonte
E depois? $this->_redirect($redirectUrl);?
MrUpsidown
@MrUpsidown. _redirectse você estiver em um controlador. Se você estiver em outro lugar:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius
Deixa pra lá. Adicionando ->sendResponse()no final fez o trabalho!
MrUpsidown
@MrUpsidown. Desculpe. Eu esquecisendResponse
Marius
2

A melhor maneira de fazer isso é assim.

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

Se você deseja redirecionar para outro URL com parâmetros de consulta, faça o seguinte:

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

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

Isso o redirecionará para: http: //magento.local/en_en/shop/index? Test = 1 & test = 2

Willster
fonte
0

Se você acabou aqui no google, está usando um controlador e deseja redirecionar para outro preservando os argumentos que você pode usar:

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

Onde module, controllere actionpode ser substituído por *preservá-lo do valor. Outra ação no mesmo controlador:

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

Mesmo nome de ação, controlador irmão:

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

E assim por diante...

Faísca
fonte