Как я могу помешать перенаправлению через пользовательский контроллер?

magento.stackexchange https://magento.stackexchange.com//questions/69941

Вопрос

У меня есть пользовательская форма с действием, которое вызывает мой модульный контроллер, я хотел бы предотвратить перенаправить и остаться на странице, где представлена форма, но когда я пытаюсь добавить подстановочный знак в моем индексе контроллера, я получаю действие«Слишком много перенаправленных ошибок»

$this->_redirect('*/*/');

Я также попробовал

$this->_redirectReferer();
.

и

$this->_redirectReferer('*/*/');
.

Вот мое индексное действие в моем контроллере модуля

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();
}
.

и ниже моя форма, какие сообщения для моего контроллера

<form method="post" action="<?php echo Mage::getUrl('locale/switch'); ?>">
    ....
</form>
.

Есть ли лучший способ отправить эту форму без перенаправления на контроллер.

Это было полезно?

Решение

Ответ не включает в себя форсирование Magento, чтобы остаться на странице, поскольку

$this->_redirectReferer()
.

Хорошо обрабатывает это поведение для нас.Сама проблема была связана с некоторыми страницами, имеющими безопасный URL, который означал, что Magento будет перенаправлять, когда форма была представлена через https, решение было изменено:

<?php echo Mage::getUrl('locale/switch'); ?>
.

к

<?php echo Mage::getUrl('locale/switch',array('_secure'=>true)); ?>
.

Теперь форма может быть отправлена над безопасными и неустойчивыми URL-адресами без перенаправления

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top