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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top