¿Cómo puedo prevenir una redirección a través del controlador personalizado?
-
13-12-2019 - |
Pregunta
Tengo un formulario personalizado con una acción que llama a mi controlador de módulos, me gustaría evitar la redirección y permanecer en la página donde se envía el formulario, pero cuando intento agregar un comodín en mi acción de índice de controlador, obtengo un'Demasiados redirigs errores'
$this->_redirect('*/*/');
También he intentado
$this->_redirectReferer();
y
$this->_redirectReferer('*/*/');
Aquí está mi acción de índice en mi controlador de módulos
public function indexAction()
{
$params = Mage::app()->getRequest()->getPost();
if (isset($params['country'])) {
$this->setCountry((string)$params['country'], isset($params['hide']));
}
if (isset($params['currency'])) {
$this->setCurrency((string)$params['currency']);
}
$this->_redirectReferer();
}
y abajo es mi forma que publica a mi controlador
<form method="post" action="<?php echo Mage::getUrl('locale/switch'); ?>">
....
</form>
¿Existe una mejor manera de presentar este formulario sin redirigir al controlador?
Solución
La respuesta no implica forzar Magento para permanecer en la página desde
$this->_redirectReferer()
Maneja este comportamiento bien para nosotros.El problema en sí mismo se debió a algunas páginas que tienen una URL segura, lo que significaba que Magento rediría cuando se envió el formulario sobre https
, la solución era cambiar:
<?php echo Mage::getUrl('locale/switch'); ?>
a
<?php echo Mage::getUrl('locale/switch',array('_secure'=>true)); ?>
Ahora se puede enviar el formulario sobre las URL seguras e inseguras sin redirigir