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.

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'));

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'));

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


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...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.