Redireccionar a URL con cadena de consulta

11

En mi módulo, después de la ejecución de mi script, necesito hacer una redirección a una página con una cadena de consulta en la URL.

Esto es lo que tengo:

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

También probé:

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

Ambos métodos arrojan un error: se ha producido un error al procesar su solicitud

Lo que espero es ser redirigido a http://magento.local/en_en/shop/index?test=1

¿Alguien sabe cómo puedo lograr eso?

Editar:

Como sugerí, he intentado:

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

No hay error, pero no pasa nada. No estoy en un controlador.

Edición 2:

Terminé usando:

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

Esto funciona como se esperaba! Gracias.

MrUpsidown
fuente

Respuestas:

9

¿Por qué no simplemente construir la url de esta manera?

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

El segundo parámetro de setRedirectes para el código de redireccionamiento (301, 302).

Si quiere construir la url internamente, puede intentar esto:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));
Marius
fuente
¿Y entonces? $this->_redirect($redirectUrl);?
MrUpsidown
@MrUpsidown. _redirectSi estás en un controlador. Si estás en otro lugar:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius
No importa. Agregar ->sendResponse()al final hizo el trabajo!
MrUpsidown
@MrUpsidown. Lo siento. Me olvidé desendResponse
Marius
2

La mejor manera de hacer esto es así.

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

Si desea redirigir a otra URL con parámetros de consulta, puede hacerlo así:

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

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

Esto lo redirigirá a: http: //magento.local/en_en/shop/index? Test = 1 & test = 2

Willster
fuente
0

Si terminó aquí desde google, está usando un controlador y desea redirigir a otro conservando los argumentos que puede usar:

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

Donde module, controllery actionpuede ser sustituido por *preservar su valor. Otra acción en el mismo controlador:

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

Mismo nombre de acción, controlador hermano:

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

Y así...

Chispa - chispear
fuente