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.

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

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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.