Como posso evitar um redirecionamento via controlador personalizado?
-
13-12-2019 - |
Pergunta
Eu tenho um formulário personalizado com uma ação que chama meu controlador de módulo, gostaria de evitar o redirecionamento e permanecer na página onde o formulário é enviado, mas quando tento adicionar um curinga na ação de índice do meu controlador, recebo um 'muitos erro de redirecionamento'
$this->_redirect('*/*/');
Eu também tentei
$this->_redirectReferer();
E
$this->_redirectReferer('*/*/');
Aqui está minha ação de índice no meu controlador de módulo
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();
}
E abaixo está o meu formulário que posta no meu controlador
<form method="post" action="<?php echo Mage::getUrl('locale/switch'); ?>">
....
</form>
Existe uma maneira melhor de enviar este formulário sem redirecionar para o controlador.
Solução
A resposta não envolve forçar o Magento a permanecer na página, pois
$this->_redirectReferer()
Lida muito bem com esse comportamento para nós.O problema em si era devido a algumas páginas terem uma URL segura, o que significava que o Magento redirecionaria quando o formulário fosse enviado. https
a solução foi mudar:
<?php echo Mage::getUrl('locale/switch'); ?>
Para
<?php echo Mage::getUrl('locale/switch',array('_secure'=>true)); ?>
Agora o formulário pode ser enviado por URLs seguros e inseguros sem redirecionamento